برنامه نویسی

ساخت عامل تماس ابزار با LangGraph و IBM watsonx.ai Flow Engine

Summarize this content to 400 words in Persian Lang
هوش مصنوعی مولد به سرعت در حال تکامل است، و در چند سال گذشته، ما شاهد چند الگوی واضح بوده‌ایم که توسعه‌دهندگان می‌توانند آن‌ها را پیاده‌سازی کنند – از دستور ساده شروع، به سمت Retrieval Augmented Generation (RAG)، و اکنون Tool Calling و Agents. ایجاد برنامه های کاربردی در اطراف Agent ها اغلب شامل اتصال ابزارها، مدل ها و API های مختلف است.

در این آموزش، نحوه راه‌اندازی و اجرای یک عامل هوش مصنوعی را با استفاده از watsonx.ai Flow Engine و LangGraph، با کمک مدل‌هایی که توسط پلتفرم watsonx.ai IBM ارائه می‌شوند، خواهید آموخت. این راهنما شما را قدم به قدم از طریق نصب ابزارهای مورد نیاز، استقرار ابزارهای خود در Flow Engine و اجرای یک برنامه چت بر روی دستگاه خود راهنمایی می کند.

تماس با ابزار و نمایندگان

فراخوانی ابزار به مدل های زبان بزرگ (LLM) اجازه می دهد تا با پیروی از دستورالعمل های تعریف شده توسط کاربر، با ابزارهای خارجی کار کنند. مدل ورودی های مورد نیاز یک ابزار را مشخص می کند و ابزار کار واقعی را انجام می دهد. این برای تبدیل داده های موجود به اطلاعات ساختاریافته یا پیوند دادن ابزارها به گردش کار عالی است. Flow Engine با ارائه راه‌هایی برای تبدیل منابع داده موجود مانند پایگاه‌های داده و APIها به ابزار و اتصال به این ابزارها از چارچوب‌های مختلف برای ساخت برنامه‌های هوش مصنوعی مانند LangChain و LangGraph، این فرآیند را آسان‌تر می‌کند.

Agent ها مانند کمک های هوش مصنوعی هستند که برای انجام وظایف خاص ساخته شده اند و برای تکمیل این گفتگوها به فراخوانی ابزار تکیه می کنند. این به آنها اجازه می دهد تا به ابزارهای خارجی دسترسی داشته باشند، اطلاعات را پردازش کنند و دانش موجود در LLM را متناسب با نیازهای کاربر گسترش دهند. چندین فریمورک محبوب برای ساخت عوامل وجود دارد، چه در جاوا اسکریپت و چه در پایتون. در این آموزش ما از LangGraph استفاده می کنیم که بر اساس LangChain ساخته شده است تا عاملی ایجاد کنیم که قادر به فراخوانی ابزارهایی است که می توانند اطلاعات را از Google Books و Wikipedia بازیابی کنند. همانطور که در بخش بعدی خواهید آموخت، ابزارها در Flow Engine تعریف می شوند و از طریق JavaScript SDK متصل می شوند.

یک عامل تماس با ابزار بسازید

در این بخش نحوه راه اندازی و اجرای یک عامل هوش مصنوعی با استفاده از watsonx.ai Flow Engine (wxflows) و LangGraph. نماینده قادر خواهد بود با استفاده از مجموعه ای از ابزارهای از پیش ساخته شده انجمن، با چندین ابزار تماس بگیرد تا به سؤالات مربوط به کتاب های مورد علاقه یا سایر رسانه های محبوب شما پاسخ دهد. البته، شما همچنین می توانید منابع داده خود (مانند پایگاه داده ها و API ها) را به ابزار تبدیل کنید. ما همه چیزهایی را که باید بدانید، از نصب ابزارها گرفته تا استقرار و اجرای برنامه در دستگاهتان را پوشش خواهیم داد.

این مثال شامل فناوری های زیر است:

LangGraph SDK (برای عامل)
پسوند LangChain SDK watsonx.ai (برای مدل ها)

wxflows SDK (برای ابزارها)
Carbon AI Chat (برای رابط کاربری)

ما از مدل چت watsonx.ai از LangChain استفاده خواهیم کرد، اما شما می توانید از هر یک از مدل های چت پشتیبانی شده استفاده کنید.

برای شروع نصب به بخش بعدی بروید wxflows CLI، پروژه Flow Engine خود را راه اندازی کنید و عامل را از طریق یک برنامه چت اجرا کنید. استفاده خواهیم کرد google_books و wikipedia به عنوان نمونه هایی از ابزارهایی که نماینده می تواند آنها را فراخوانی کند.

پیش نیازها

قبل از شروع، باید یک حساب کاربری برای watsonx.ai Flow Engine برای این آموزش ایجاد کنید:

مرحله 1: نصب کنید wxflows CLI

با نصب شروع کنید wxflows CLI، که برای نصب پایتون (نسخه 3.8 یا بالاتر) روی دستگاه ما نیاز دارد. این مراحل را دنبال کنید:

CLI را از صفحه نصب دانلود کنید.

یک پوشه جدید در رایانه خود ایجاد کنید.
mkdir wxflows-project
cd wxflows-project

در داخل این پوشه، اجرا کنید:
pip install wxflows_cli-1.0.0rc192-py3-none-any.whl –force-reinstall

از نام دقیق آن استفاده کنید .whl فایلی که دانلود کردید

با دنبال کردن دستورالعمل های ورود به CLI وارد شوید.
wxflows login

پس از راه‌اندازی CLI برای watsonx.ai Flow Engine، اجازه دهید به بخش بعدی ادامه دهیم و با ابزارهای Wikipedia و Google Books یک نقطه پایانی ایجاد کنیم.

مرحله 2: یک پروژه watsonx.ai Flow Engine را راه اندازی کنید

حالا، راه اندازی جدید wxflows پروژه این شامل دو ابزار خواهد بود:

google_books: برای جستجو و بازیابی اطلاعات از Google Books استفاده می شود.

wikipedia: برای پرس و جو و بازیابی اطلاعات از ویکی پدیا استفاده می شود.

دستور زیر را برای مقداردهی اولیه پروژه و وارد کردن این ابزارها اجرا کنید:

wxflows init –endpoint-name api/wxflows-toolcalling \
–import-name google_books –import-package https://github.com/IBM/wxflows/raw/refs/heads/main/tools/google_books.zip \
–import-tool-name google_books –import-tool-description “Retrieve information from Google Books. Find books by search string, for example to search for Daniel Keyes ‘Flowers for Algernon’ use q: ‘intitle:flowers+inauthor:keyes'” –import-tool-fields “books|book” \
–import-name wikipedia –import-package https://github.com/IBM/wxflows/raw/refs/heads/main/tools/wikipedia.zip \
–import-tool-name wikipedia –import-tool-description “Retrieve information from Wikipedia.” –import-tool-fields “search|page”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا کاری است که این دستور انجام می دهد:

نقطه پایانی ایجاد می کند: یک نقطه پایانی به نام را تعریف می کند api/wxflows-toolcalling.

واردات google_books: ابزاری برای بازیابی کتاب‌ها از Google Books با توضیحات و فیلدهای خاص مانند اضافه می‌کند books|book.

واردات wikipedia: ابزاری برای جستجوی ویکی پدیا با توضیحات و فیلدهایی مانند اضافه می کند search|page.

پس از اجرای دستور، می توانید a را ببینید wxflows.toml فایل در فهرست فعلی ظاهر می شود. این فایل پیکربندی ابزارهای شما را در خود نگه می‌دارد که با اجرای آن‌ها را در یک نقطه پایانی اجرا می‌کنیم:

wxflows deploy

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استقرار نقطه پایانی فقط باید چند ثانیه طول بکشد و این wxflows SDK از این نقطه پایانی برای بازیابی و فراخوانی ابزارها استفاده خواهد کرد، همانطور که در بخش بعدی یاد خواهید گرفت.

مرحله 3: از LangGraph برای ایجاد یک عامل استفاده کنید

اکنون که یک نقطه پایانی Flow Engine داریم، باید عاملی ایجاد کنیم که بتواند از این نقطه پایانی برای فراخوانی ابزار استفاده کند. ما از LangGraph برای این کار استفاده خواهیم کرد، همراه با wxflows SDK و پسوند LangChain برای watsonx.ai:

یک دایرکتوری جدید ایجاد کنید:
mkdir langgraph
cd langgraph

در این دایرکتوری دستور زیر را برای راه اندازی یک پروژه TypeScript جدید و نصب وابستگی های مورد نیاز اجرا کنید:
npm init -y
npm i @langchain/langgraph @langchain/core @langchain/community dotenv typescript @wxflows/sdk@beta

این بسته های زیر را نصب می کند:

– `@langchain/langgraph`: Build agents, structured workflows and handle tool calling.
– `@langchain/core`: Provides core functionality for building and managing AI-driven workflows.
– `@langchain/community`: Provides access to experimental and community-contributed integrations and tools, such as models on the watsonx.ai platform.
– `dotenv`: Loads environment variables from a `.env` file, making it easier to manage API keys and configuration values.
– `typescript`: Sets up TypeScript, a superset of JavaScript, for type checking and better code quality.
– `@wxflows/sdk@beta`: Includes the SDK for working with watsonx.ai Flows Engine, which allows you to deploy and manage tools.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اجرای این دستورات، پروژه شما آماده شروع ساخت یک عامل خواهد بود.

ایجاد کنید .env فایل با مقادیر زیر:
# You can get these credentials from https://dataplatform.cloud.ibm.com/developer-access?context=wx
WATSONX_AI_AUTH_TYPE=iam
WATSONX_AI_ENDPOINT=https://us-south.ml.cloud.ibm.com
WATSONX_AI_IDENTITY_SERVER=iam.cloud.ibm.com
WATSONX_AI_APIKEY=
WATSONX_AI_PROJECT_ID=

# run the command ‘wxflows whoami –apikey’
WXFLOWS_APIKEY=

# endpoint shows in your terminal after running ‘wxflows deploy’
WXFLOWS_ENDPOINT=

پس از ایجاد .env فایل، یک فایل جدید به نام ایجاد کنید index.ts و کد LangGraph را اضافه کنید:
import { AIMessage, BaseMessage, HumanMessage, SystemMessage } from “@langchain/core/messages”;
import { ChatWatsonx } from “@langchain/community/chat_models/ibm”;
import { StateGraph } from “@langchain/langgraph”;
import { MemorySaver, Annotation } from “@langchain/langgraph”;
import { ToolNode } from “@langchain/langgraph/prebuilt”;
import wxflows from “@wxflows/sdk/langchain”;
import “dotenv/config”;

(async () => {
// Define the graph state
// See here for more info: https://langchain-ai.github.io/langgraphjs/how-tos/define-state/
const StateAnnotation = Annotation.Root({
messages: Annotation<BaseMessage[]>({
reducer: (x, y) => x.concat(y),
}),
});

const toolClient = new wxflows({
endpoint: process.env.WXFLOWS_ENDPOINT,
apikey: process.env.WXFLOWS_APIKEY,
traceSession: ‘…’
});

const tools = await toolClient.lcTools;
const toolNode = new ToolNode(tools);

// Connect to the LLM provider
const model = new ChatWatsonx({
model: “mistralai/mistral-large”,
projectId: process.env.WATSONX_AI_PROJECT_ID,
serviceUrl: process.env.WATSONX_AI_ENDPOINT,
version: ‘2024-05-31’,
}).bindTools(tools);

این قسمت اول کد وابستگی‌های مورد نیاز را وارد می‌کند، ابزارها را از watsonx.ai Flow Engine بازیابی می‌کند و اتصال به Mistral Large را در حال اجرا بر روی پلت فرم watsonx.ai تنظیم می‌کند. بیایید قسمت دوم کد را اضافه کنیم index.ts فایلی که ایجاد عامل را انجام می دهد:
// Define the function that determines whether to continue or not
// We can extract the state typing via `StateAnnotation.State`
function shouldContinue(state: typeof StateAnnotation.State) {
const messages = state.messages;
const lastMessage = messages[messages.length – 1] as AIMessage;

// If the LLM makes a tool call, then we route to the “tools” node
if (lastMessage.tool_calls?.length) {
console.log(‘TOOL CALL’, lastMessage.tool_calls)
return “tools”;
}
// Otherwise, we stop (reply to the user)
return “__end__”;
}

// Define the function that calls the model
async function callModel(state: typeof StateAnnotation.State) {
const messages = state.messages;
const response = await model.invoke(messages);

// We return a list, because this will get added to the existing list
return { messages: [response] };
}

// Define a new graph
const workflow = new StateGraph(StateAnnotation)
.addNode(“agent”, callModel)
.addNode(“tools”, toolNode)
.addEdge(“__start__”, “agent”)
.addConditionalEdges(“agent”, shouldContinue)
.addEdge(“tools”, “agent”);

// Initialize memory to persist state between graph runs
const checkpointer = new MemorySaver();

// Finally, we compile it!
// This compiles it into a LangChain Runnable.
// Note that we’re (optionally) passing the memory when compiling the graph
const app = workflow.compile({ checkpointer });

// Use the Runnable
const finalState = await app.invoke(
{
messages: [
new SystemMessage(
“Only use the tools available, don’t answer the question based on pre-trained data”
),
new HumanMessage(
“Search information about the book escape from james patterson”
),
],
},
{ configurable: { thread_id: “42” } }
);

console.log(finalState.messages[finalState.messages.length – 1].content);
// You can use the `thread_id` to ask follow up questions, the conversation context is retained via the saved state (i.e. stored list of messages):
})();

در این قسمت دوم کد، عامل ایجاد می شود و پیامی را به عامل ارسال می کنیم: “جستجوی اطلاعات مربوط به کتاب فرار از جیمز پترسون”. این یک سری از تعاملات بین ابزارهای در حال اجرا در Flow Engine و LLM در watsonx.ai را آغاز می کند تا به شما پاسخ دهد.

برای اجرای کد بالا باید a را اضافه کنید start اسکریپت به package.json فایل:

“scripts”: {
“start”: “npx tsx ./index.ts”,
“test”: “echo \”Error: no test specified\” && exit 1″
}

برای ارسال پیام به نماینده، اکنون می توانید اجرا کنید npm start از ترمینال، که باید اطلاعات بیشتری در مورد کتاب “فرار” نوشته “جیمز پترسون” به شما ارائه دهد. در کنار اطلاعات، تماس های ابزار استفاده شده نیز در ترمینال شما چاپ می شود.

فراخوانی ابزار به شکل زیر خواهد بود:

TOOL CALL [
{
name: ‘google_books’,
args: {
query: ‘{\n’ +
‘ books(q: “intitle:escape+inauthor:patterson”) {\n’ +
‘ authors\n’ +
‘ title\n’ +
‘ volumeId\n’ +
‘ }\n’ +
‘}’
},
type: ‘tool_call’,
id: ‘Zg9jXPOR2’
}
]

watsonx.ai Flow Engine از GraphQL به عنوان فناوری اساسی برای تعریف و فراخوانی ابزارها استفاده می کند.

و پاسخ نهایی چیزی شبیه به این است:

### Information about the book “Escape” by James Patterson

Here is the information about the book “Escape” by James Patterson:

– **Authors:** James Patterson, David Ellis
– **Title:** Escape
– **Volume ID:** EFtHEAAAQBAJ

قدم بعدی پیاده سازی یک برنامه چت است که از نقطه پایانی Flow Engine و عامل LangGraph استفاده می کند، همانطور که در بخش بعدی خواهید آموخت.

مرحله 4: از عامل در یک برنامه چت استفاده کنید

مرحله آخر استفاده از عامل و ابزارهای انتهایی در یک برنامه چت است که می توانید در این مخزن پیدا کنید.

با استفاده از سرویس رایگان StackBlitz می توانید این برنامه را در مرورگر اجرا کنید:

می توانید برنامه چت را در مرورگر از طریق StackBlitz اجرا کنید یا از دکمه “دانلود” برای دانلود کد منبع برنامه و اجرای آن به صورت محلی استفاده کنید.

این برنامه به همان اعتبارنامه‌های مرحله 3.3 نیاز دارد که می‌توانید آن‌ها را در نسخه جدید ذخیره کنید .env فایل مستقیماً در StackBlitz یا به صورت محلی:

# You can get these credentials from https://dataplatform.cloud.ibm.com/developer-access?context=wx
WATSONX_AI_AUTH_TYPE=iam
WATSONX_AI_ENDPOINT=https://us-south.ml.cloud.ibm.com
WATSONX_AI_IDENTITY_SERVER=iam.cloud.ibm.com
WATSONX_AI_APIKEY=
WATSONX_AI_PROJECT_ID=

# run the command ‘wxflows whoami –apikey’
WXFLOWS_APIKEY=

# endpoint shows in your terminal after running ‘wxflows deploy’
WXFLOWS_ENDPOINT=

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر می خواهید برنامه را به صورت محلی اجرا کنید، اجرای آن را فراموش نکنید npm i در دایرکتوری برنامه برای نصب وابستگی ها. بعد از نصب این ها می توانید اجرا کنید npm start برای راه اندازی برنامه

برنامه چت از کتابخانه مؤلفه های Carbon Chat AI IBM استفاده می کند و به شکل زیر است:

اکنون می توانید هر نوع سوالی را که مربوط به کتاب یا سایر رسانه های محبوب است بپرسید. نماینده از Google Books یا ابزار Wikipedia از watsonx.ai Flow Engine برای پاسخ به سؤالات شما استفاده می کند، زیرا LangGraph وضعیت حافظه را حفظ می کند و می توانید سؤالات بعدی را نیز بپرسید. گام بعدی این است که داده های خود (سازمان) را به یک ابزار تبدیل کنید، که برای آن می توانید به این دستورالعمل ها نگاهی بیندازید.

خلاصه و مراحل بعدی

این آموزش به شما نشان می دهد که چگونه با استفاده از IBM watsonx.ai Flow Engine و LangGraph یک عامل هوش مصنوعی را راه اندازی و اجرا کنید. شما یاد گرفتید که چگونه ابزارها را پیکربندی کنید google_books و wikipedia، یک پروژه Flow Engine را اجرا کنید و برنامه را به صورت محلی یا در یک مرورگر اجرا کنید. این ابزارها عامل شما را قادر می سازد تا داده های بلادرنگ را بازیابی کند و با API های خارجی تعامل داشته باشد.

با این مهارت‌های جدید، اکنون پایه‌ای قوی برای ساخت اپلیکیشن‌های مبتنی بر هوش مصنوعی دارید wxflows و watsonx.ai. چه در حال ایجاد گردش کار ساده یا ادغام های پیچیده تر باشید، CLI و SDK اجرای پروژه های خود را آسان می کنند.

ما برای دیدن آنچه شما ایجاد می کنید هیجان زده هستیم! به انجمن Discord ما بپیوندید و پروژه های خود را با ما به اشتراک بگذارید!

هوش مصنوعی مولد به سرعت در حال تکامل است، و در چند سال گذشته، ما شاهد چند الگوی واضح بوده‌ایم که توسعه‌دهندگان می‌توانند آن‌ها را پیاده‌سازی کنند – از دستور ساده شروع، به سمت Retrieval Augmented Generation (RAG)، و اکنون Tool Calling و Agents. ایجاد برنامه های کاربردی در اطراف Agent ها اغلب شامل اتصال ابزارها، مدل ها و API های مختلف است.

در این آموزش، نحوه راه‌اندازی و اجرای یک عامل هوش مصنوعی را با استفاده از watsonx.ai Flow Engine و LangGraph، با کمک مدل‌هایی که توسط پلتفرم watsonx.ai IBM ارائه می‌شوند، خواهید آموخت. این راهنما شما را قدم به قدم از طریق نصب ابزارهای مورد نیاز، استقرار ابزارهای خود در Flow Engine و اجرای یک برنامه چت بر روی دستگاه خود راهنمایی می کند.

تماس با ابزار و نمایندگان

فراخوانی ابزار به مدل های زبان بزرگ (LLM) اجازه می دهد تا با پیروی از دستورالعمل های تعریف شده توسط کاربر، با ابزارهای خارجی کار کنند. مدل ورودی های مورد نیاز یک ابزار را مشخص می کند و ابزار کار واقعی را انجام می دهد. این برای تبدیل داده های موجود به اطلاعات ساختاریافته یا پیوند دادن ابزارها به گردش کار عالی است. Flow Engine با ارائه راه‌هایی برای تبدیل منابع داده موجود مانند پایگاه‌های داده و APIها به ابزار و اتصال به این ابزارها از چارچوب‌های مختلف برای ساخت برنامه‌های هوش مصنوعی مانند LangChain و LangGraph، این فرآیند را آسان‌تر می‌کند.

Agent ها مانند کمک های هوش مصنوعی هستند که برای انجام وظایف خاص ساخته شده اند و برای تکمیل این گفتگوها به فراخوانی ابزار تکیه می کنند. این به آنها اجازه می دهد تا به ابزارهای خارجی دسترسی داشته باشند، اطلاعات را پردازش کنند و دانش موجود در LLM را متناسب با نیازهای کاربر گسترش دهند. چندین فریمورک محبوب برای ساخت عوامل وجود دارد، چه در جاوا اسکریپت و چه در پایتون. در این آموزش ما از LangGraph استفاده می کنیم که بر اساس LangChain ساخته شده است تا عاملی ایجاد کنیم که قادر به فراخوانی ابزارهایی است که می توانند اطلاعات را از Google Books و Wikipedia بازیابی کنند. همانطور که در بخش بعدی خواهید آموخت، ابزارها در Flow Engine تعریف می شوند و از طریق JavaScript SDK متصل می شوند.

یک عامل تماس با ابزار بسازید

در این بخش نحوه راه اندازی و اجرای یک عامل هوش مصنوعی با استفاده از watsonx.ai Flow Engine (wxflows) و LangGraph. نماینده قادر خواهد بود با استفاده از مجموعه ای از ابزارهای از پیش ساخته شده انجمن، با چندین ابزار تماس بگیرد تا به سؤالات مربوط به کتاب های مورد علاقه یا سایر رسانه های محبوب شما پاسخ دهد. البته، شما همچنین می توانید منابع داده خود (مانند پایگاه داده ها و API ها) را به ابزار تبدیل کنید. ما همه چیزهایی را که باید بدانید، از نصب ابزارها گرفته تا استقرار و اجرای برنامه در دستگاهتان را پوشش خواهیم داد.

این مثال شامل فناوری های زیر است:

  • LangGraph SDK (برای عامل)
  • پسوند LangChain SDK watsonx.ai (برای مدل ها)
  • wxflows SDK (برای ابزارها)
  • Carbon AI Chat (برای رابط کاربری)

ما از مدل چت watsonx.ai از LangChain استفاده خواهیم کرد، اما شما می توانید از هر یک از مدل های چت پشتیبانی شده استفاده کنید.

wxflow با لنگگراف

برای شروع نصب به بخش بعدی بروید wxflows CLI، پروژه Flow Engine خود را راه اندازی کنید و عامل را از طریق یک برنامه چت اجرا کنید. استفاده خواهیم کرد google_books و wikipedia به عنوان نمونه هایی از ابزارهایی که نماینده می تواند آنها را فراخوانی کند.

پیش نیازها

قبل از شروع، باید یک حساب کاربری برای watsonx.ai Flow Engine برای این آموزش ایجاد کنید:

مرحله 1: نصب کنید wxflows CLI

با نصب شروع کنید wxflows CLI، که برای نصب پایتون (نسخه 3.8 یا بالاتر) روی دستگاه ما نیاز دارد. این مراحل را دنبال کنید:

  1. CLI را از صفحه نصب دانلود کنید.

  2. یک پوشه جدید در رایانه خود ایجاد کنید.

    mkdir wxflows-project
    cd wxflows-project
    
  3. در داخل این پوشه، اجرا کنید:

    pip install wxflows_cli-1.0.0rc192-py3-none-any.whl --force-reinstall
    

    از نام دقیق آن استفاده کنید .whl فایلی که دانلود کردید

  4. با دنبال کردن دستورالعمل های ورود به CLI وارد شوید.

    wxflows login
    

پس از راه‌اندازی CLI برای watsonx.ai Flow Engine، اجازه دهید به بخش بعدی ادامه دهیم و با ابزارهای Wikipedia و Google Books یک نقطه پایانی ایجاد کنیم.

مرحله 2: یک پروژه watsonx.ai Flow Engine را راه اندازی کنید

حالا، راه اندازی جدید wxflows پروژه این شامل دو ابزار خواهد بود:

  • google_books: برای جستجو و بازیابی اطلاعات از Google Books استفاده می شود.
  • wikipedia: برای پرس و جو و بازیابی اطلاعات از ویکی پدیا استفاده می شود.

دستور زیر را برای مقداردهی اولیه پروژه و وارد کردن این ابزارها اجرا کنید:

wxflows init --endpoint-name api/wxflows-toolcalling \
--import-name google_books --import-package https://github.com/IBM/wxflows/raw/refs/heads/main/tools/google_books.zip \
--import-tool-name google_books --import-tool-description "Retrieve information from Google Books. Find books by search string, for example to search for Daniel Keyes 'Flowers for Algernon' use q: 'intitle:flowers+inauthor:keyes'" --import-tool-fields "books|book" \
--import-name wikipedia --import-package https://github.com/IBM/wxflows/raw/refs/heads/main/tools/wikipedia.zip \
--import-tool-name wikipedia --import-tool-description "Retrieve information from Wikipedia." --import-tool-fields "search|page"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا کاری است که این دستور انجام می دهد:

  • نقطه پایانی ایجاد می کند: یک نقطه پایانی به نام را تعریف می کند api/wxflows-toolcalling.
  • واردات google_books: ابزاری برای بازیابی کتاب‌ها از Google Books با توضیحات و فیلدهای خاص مانند اضافه می‌کند books|book.
  • واردات wikipedia: ابزاری برای جستجوی ویکی پدیا با توضیحات و فیلدهایی مانند اضافه می کند search|page.

پس از اجرای دستور، می توانید a را ببینید wxflows.toml فایل در فهرست فعلی ظاهر می شود. این فایل پیکربندی ابزارهای شما را در خود نگه می‌دارد که با اجرای آن‌ها را در یک نقطه پایانی اجرا می‌کنیم:

wxflows deploy
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استقرار نقطه پایانی فقط باید چند ثانیه طول بکشد و این wxflows SDK از این نقطه پایانی برای بازیابی و فراخوانی ابزارها استفاده خواهد کرد، همانطور که در بخش بعدی یاد خواهید گرفت.

مرحله 3: از LangGraph برای ایجاد یک عامل استفاده کنید

اکنون که یک نقطه پایانی Flow Engine داریم، باید عاملی ایجاد کنیم که بتواند از این نقطه پایانی برای فراخوانی ابزار استفاده کند. ما از LangGraph برای این کار استفاده خواهیم کرد، همراه با wxflows SDK و پسوند LangChain برای watsonx.ai:

  1. یک دایرکتوری جدید ایجاد کنید:

    mkdir langgraph
    cd langgraph
    
  2. در این دایرکتوری دستور زیر را برای راه اندازی یک پروژه TypeScript جدید و نصب وابستگی های مورد نیاز اجرا کنید:

    npm init -y
    npm i @langchain/langgraph @langchain/core @langchain/community dotenv typescript @wxflows/sdk@beta
    

    این بسته های زیر را نصب می کند:

- `@langchain/langgraph`: Build agents, structured workflows and handle tool calling.
- `@langchain/core`: Provides core functionality for building and managing AI-driven workflows.
- `@langchain/community`: Provides access to experimental and community-contributed integrations and tools, such as models on the watsonx.ai platform.
- `dotenv`: Loads environment variables from a `.env` file, making it easier to manage API keys and configuration values.
- `typescript`: Sets up TypeScript, a superset of JavaScript, for type checking and better code quality.
- `@wxflows/sdk@beta`: Includes the SDK for working with watsonx.ai Flows Engine, which allows you to deploy and manage tools.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از اجرای این دستورات، پروژه شما آماده شروع ساخت یک عامل خواهد بود.

  1. ایجاد کنید .env فایل با مقادیر زیر:

    # You can get these credentials from https://dataplatform.cloud.ibm.com/developer-access?context=wx
    WATSONX_AI_AUTH_TYPE=iam
    WATSONX_AI_ENDPOINT=https://us-south.ml.cloud.ibm.com
    WATSONX_AI_IDENTITY_SERVER=iam.cloud.ibm.com
    WATSONX_AI_APIKEY=
    WATSONX_AI_PROJECT_ID=
    
    # run the command 'wxflows whoami --apikey'
    WXFLOWS_APIKEY=
    
    # endpoint shows in your terminal after running 'wxflows deploy'
    WXFLOWS_ENDPOINT=
    
  2. پس از ایجاد .env فایل، یک فایل جدید به نام ایجاد کنید index.ts و کد LangGraph را اضافه کنید:

    import { AIMessage, BaseMessage, HumanMessage, SystemMessage } from "@langchain/core/messages";
    import { ChatWatsonx } from "@langchain/community/chat_models/ibm";
    import { StateGraph } from "@langchain/langgraph";
    import { MemorySaver, Annotation } from "@langchain/langgraph";
    import { ToolNode } from "@langchain/langgraph/prebuilt";
    import wxflows from "@wxflows/sdk/langchain";
    import "dotenv/config";
    
    (async () => {
        // Define the graph state
        // See here for more info: https://langchain-ai.github.io/langgraphjs/how-tos/define-state/
        const StateAnnotation = Annotation.Root({
            messages: Annotation<BaseMessage[]>({
                reducer: (x, y) => x.concat(y),
            }),
        });
    
        const toolClient = new wxflows({
            endpoint: process.env.WXFLOWS_ENDPOINT,
            apikey: process.env.WXFLOWS_APIKEY,
            traceSession: '...'
        });
    
        const tools = await toolClient.lcTools;
        const toolNode = new ToolNode(tools);
    
        // Connect to the LLM provider 
        const model = new ChatWatsonx({
            model: "mistralai/mistral-large",
            projectId: process.env.WATSONX_AI_PROJECT_ID,
            serviceUrl: process.env.WATSONX_AI_ENDPOINT,
            version: '2024-05-31',
        }).bindTools(tools);
    

    این قسمت اول کد وابستگی‌های مورد نیاز را وارد می‌کند، ابزارها را از watsonx.ai Flow Engine بازیابی می‌کند و اتصال به Mistral Large را در حال اجرا بر روی پلت فرم watsonx.ai تنظیم می‌کند. بیایید قسمت دوم کد را اضافه کنیم index.ts فایلی که ایجاد عامل را انجام می دهد:

        // Define the function that determines whether to continue or not
        // We can extract the state typing via `StateAnnotation.State`
        function shouldContinue(state: typeof StateAnnotation.State) {
            const messages = state.messages;
            const lastMessage = messages[messages.length - 1] as AIMessage;
    
            // If the LLM makes a tool call, then we route to the "tools" node
            if (lastMessage.tool_calls?.length) {
            console.log('TOOL CALL', lastMessage.tool_calls)
            return "tools";
            }
            // Otherwise, we stop (reply to the user)
            return "__end__";
        }
    
        // Define the function that calls the model
        async function callModel(state: typeof StateAnnotation.State) {
            const messages = state.messages;
            const response = await model.invoke(messages);
    
            // We return a list, because this will get added to the existing list
            return { messages: [response] };
        }
    
        // Define a new graph
        const workflow = new StateGraph(StateAnnotation)
            .addNode("agent", callModel)
            .addNode("tools", toolNode)
            .addEdge("__start__", "agent")
            .addConditionalEdges("agent", shouldContinue)
            .addEdge("tools", "agent");
    
        // Initialize memory to persist state between graph runs
        const checkpointer = new MemorySaver();
    
        // Finally, we compile it!
        // This compiles it into a LangChain Runnable.
        // Note that we're (optionally) passing the memory when compiling the graph
        const app = workflow.compile({ checkpointer });
    
        // Use the Runnable
        const finalState = await app.invoke(
            {
            messages: [
                new SystemMessage(
                "Only use the tools available, don't answer the question based on pre-trained data"
                ),
                new HumanMessage(
                "Search information about the book escape from james patterson"
                ),
            ],
            },
            { configurable: { thread_id: "42" } }
        );
    
        console.log(finalState.messages[finalState.messages.length - 1].content);
        // You can use the `thread_id` to ask follow up questions, the conversation context is retained via the saved state (i.e. stored list of messages):
    })();
    

    در این قسمت دوم کد، عامل ایجاد می شود و پیامی را به عامل ارسال می کنیم: “جستجوی اطلاعات مربوط به کتاب فرار از جیمز پترسون”. این یک سری از تعاملات بین ابزارهای در حال اجرا در Flow Engine و LLM در watsonx.ai را آغاز می کند تا به شما پاسخ دهد.

    1. برای اجرای کد بالا باید a را اضافه کنید start اسکریپت به package.json فایل:
    "scripts": {
        "start": "npx tsx ./index.ts",
        "test": "echo \"Error: no test specified\" && exit 1"
    }
    
    1. برای ارسال پیام به نماینده، اکنون می توانید اجرا کنید npm start از ترمینال، که باید اطلاعات بیشتری در مورد کتاب “فرار” نوشته “جیمز پترسون” به شما ارائه دهد. در کنار اطلاعات، تماس های ابزار استفاده شده نیز در ترمینال شما چاپ می شود.

    فراخوانی ابزار به شکل زیر خواهد بود:

    TOOL CALL [
      {
        name: 'google_books',
        args: {
          query: '{\n' +
            '  books(q: "intitle:escape+inauthor:patterson") {\n' +
            '    authors\n' +
            '    title\n' +
            '    volumeId\n' +
            '  }\n' +
            '}'
        },
        type: 'tool_call',
        id: 'Zg9jXPOR2'
      }
    ]
    

    watsonx.ai Flow Engine از GraphQL به عنوان فناوری اساسی برای تعریف و فراخوانی ابزارها استفاده می کند.

    و پاسخ نهایی چیزی شبیه به این است:

    ### Information about the book "Escape" by James Patterson
    
    Here is the information about the book "Escape" by James Patterson:
    
    - **Authors:** James Patterson, David Ellis
    - **Title:** Escape
    - **Volume ID:** EFtHEAAAQBAJ
    

    قدم بعدی پیاده سازی یک برنامه چت است که از نقطه پایانی Flow Engine و عامل LangGraph استفاده می کند، همانطور که در بخش بعدی خواهید آموخت.

مرحله 4: از عامل در یک برنامه چت استفاده کنید

مرحله آخر استفاده از عامل و ابزارهای انتهایی در یک برنامه چت است که می توانید در این مخزن پیدا کنید.

با استفاده از سرویس رایگان StackBlitz می توانید این برنامه را در مرورگر اجرا کنید:

در StackBlitz باز کنید

می توانید برنامه چت را در مرورگر از طریق StackBlitz اجرا کنید یا از دکمه “دانلود” برای دانلود کد منبع برنامه و اجرای آن به صورت محلی استفاده کنید.

لنگگراف wxflows stackblitz

این برنامه به همان اعتبارنامه‌های مرحله 3.3 نیاز دارد که می‌توانید آن‌ها را در نسخه جدید ذخیره کنید .env فایل مستقیماً در StackBlitz یا به صورت محلی:

# You can get these credentials from https://dataplatform.cloud.ibm.com/developer-access?context=wx
WATSONX_AI_AUTH_TYPE=iam
WATSONX_AI_ENDPOINT=https://us-south.ml.cloud.ibm.com
WATSONX_AI_IDENTITY_SERVER=iam.cloud.ibm.com
WATSONX_AI_APIKEY=
WATSONX_AI_PROJECT_ID=

# run the command 'wxflows whoami --apikey'
WXFLOWS_APIKEY=

# endpoint shows in your terminal after running 'wxflows deploy'
WXFLOWS_ENDPOINT=
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر می خواهید برنامه را به صورت محلی اجرا کنید، اجرای آن را فراموش نکنید npm i در دایرکتوری برنامه برای نصب وابستگی ها. بعد از نصب این ها می توانید اجرا کنید npm start برای راه اندازی برنامه

برنامه چت از کتابخانه مؤلفه های Carbon Chat AI IBM استفاده می کند و به شکل زیر است:

برنامه چت carbon ai با لنگگراف

اکنون می توانید هر نوع سوالی را که مربوط به کتاب یا سایر رسانه های محبوب است بپرسید. نماینده از Google Books یا ابزار Wikipedia از watsonx.ai Flow Engine برای پاسخ به سؤالات شما استفاده می کند، زیرا LangGraph وضعیت حافظه را حفظ می کند و می توانید سؤالات بعدی را نیز بپرسید. گام بعدی این است که داده های خود (سازمان) را به یک ابزار تبدیل کنید، که برای آن می توانید به این دستورالعمل ها نگاهی بیندازید.

خلاصه و مراحل بعدی

این آموزش به شما نشان می دهد که چگونه با استفاده از IBM watsonx.ai Flow Engine و LangGraph یک عامل هوش مصنوعی را راه اندازی و اجرا کنید. شما یاد گرفتید که چگونه ابزارها را پیکربندی کنید google_books و wikipedia، یک پروژه Flow Engine را اجرا کنید و برنامه را به صورت محلی یا در یک مرورگر اجرا کنید. این ابزارها عامل شما را قادر می سازد تا داده های بلادرنگ را بازیابی کند و با API های خارجی تعامل داشته باشد.

با این مهارت‌های جدید، اکنون پایه‌ای قوی برای ساخت اپلیکیشن‌های مبتنی بر هوش مصنوعی دارید wxflows و watsonx.ai. چه در حال ایجاد گردش کار ساده یا ادغام های پیچیده تر باشید، CLI و SDK اجرای پروژه های خود را آسان می کنند.

ما برای دیدن آنچه شما ایجاد می کنید هیجان زده هستیم! به انجمن Discord ما بپیوندید و پروژه های خود را با ما به اشتراک بگذارید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا