ساختن یک عامل AI با Langgraph ، TypeScript ، Next.js ، tailwindcss و pinecone – قسمت 2

مقدمه
در قسمت 1، ما یک دستیار ساده با هوش مصنوعی ساختیم langgraph ، next.js ، tailwindcss و pineconeبشر عامل هوش مصنوعی ما می تواند نمایش داده های کاربر را پردازش کند ، دانش مربوطه را از Pinecone بازیابی کند و با استفاده از مدل GPT OpenAI ، پاسخ هایی را تولید کند.
اکنون ، در قسمت 2، ما عامل هوش مصنوعی ما را تقویت کنید با اضافه کردن گردش کار چند عاملبا حافظه متنوت قابلیت های مکالمه در زمان واقعیبشر با پایان این آموزش ، یک دستیار پیشرفته تر هوش مصنوعی خواهید داشت که می تواند تعامل مداوم را به صورت پویا انجام دهد.
پیشرفت ها و ویژگی ها در قسمت 2
✅ گردش کار چند عامل – اجرای عوامل اضافی AI برای کارهای مختلف.
✅ حافظه بلند مدت -ذخیره تعامل های گذشته در Pinecone برای مکالمات آگاه از متن.
✅ مکالمه در زمان واقعی UI – بهبود تجربه گپ با پاسخ های زنده.
✅ قابلیت تماس API – اجازه می دهد تا عوامل AI بتوانند داده ها را از منابع خارجی بدست آورند.
مرحله 1: اجرای گردش کار چند عامل با Langgraph
مأمورین هوش مصنوعی غالباً باید وظایف را به مأمورین تخصصی واگذار کنند. به عنوان مثال ، یک عامل ممکن است نمایش داده شدگان عمومی را انجام دهد ، در حالی که دیگری بر تجزیه و تحلیل اسناد یا بازیابی داده ها تمرکز دارد.
1. گردش کار عامل AI را در Langgraph اصلاح کنید
یک فایل جدید ایجاد کنید /lib/multiAgentGraph.ts
:
import { OpenAI } from "openai";
import { Pinecone } from "@pinecone-database/pinecone";
import { Graph, Node, Edge } from "langgraph";
type AIContext = { query: string; response: string; memory: string[] };
const openai = new OpenAI(process.env.NEXT_PUBLIC_OPENAI_API_KEY!);
const pinecone = new Pinecone({
apiKey: process.env.NEXT_PUBLIC_PINECONE_API_KEY!,
environment: process.env.NEXT_PUBLIC_PINECONE_ENVIRONMENT!,
});
const aiGraph = new Graph<AIContext>();
// General Query Agent
const generalAgent = new Node(async (ctx) => {
const response = await openai.chat.completions.create({
model: "gpt-4",
messages: [{ role: "user", content: ctx.query }],
});
ctx.response = response.choices[0].message.content;
});
// Memory Storage Agent
const memoryAgent = new Node(async (ctx) => {
const vectorStore = pinecone.index(process.env.NEXT_PUBLIC_PINECONE_INDEX!);
await vectorStore.upsert([{ id: Date.now().toString(), values: ctx.query }]);
ctx.memory.push(ctx.query);
});
aiGraph.addNode("General Query Agent", generalAgent);
aiGraph.addNode("Memory Agent", memoryAgent);
aiGraph.addEdge(new Edge("Start", "General Query Agent"));
aiGraph.addEdge(new Edge("General Query Agent", "Memory Agent"));
export { aiGraph };
این تنظیم تضمین می کند که هر پرس و جو کاربر است فرآوری شده توسط نماینده عمومی پرس و جو و ذخیره شده برای مرجع آینده در Pinecone.
مرحله 2: ارتقاء API برای پشتیبانی از مکالمات متنی
بروزرسانی /pages/api/ask.ts
به بازیابی حافظه و به هوش مصنوعی اجازه دهید تعامل های گذشته را به یاد بیاورد:
import { NextApiRequest, NextApiResponse } from "next";
import { aiGraph } from "../../lib/multiAgentGraph";
import { Pinecone } from "@pinecone-database/pinecone";
const pinecone = new Pinecone({
apiKey: process.env.NEXT_PUBLIC_PINECONE_API_KEY!,
environment: process.env.NEXT_PUBLIC_PINECONE_ENVIRONMENT!,
});
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== "POST") return res.status(405).json({ error: "Method Not Allowed" });
const { query } = req.body;
if (!query) return res.status(400).json({ error: "Missing query" });
const vectorStore = pinecone.index(process.env.NEXT_PUBLIC_PINECONE_INDEX!);
const previousContext = await vectorStore.query({ topK: 5, query });
const memory = previousContext.matches.map((match) => match.id);
const context = { query, response: "", memory };
await aiGraph.run(context);
return res.json({ response: context.response });
}
اکنون ، نماینده هوش مصنوعی ما می تواند تعامل قبلی را بازیابی کنید، انجام مکالمه طبیعی تر و متنی تربشر
مرحله 3: تقویت UI Frontend برای چت در زمان واقعی
ما رابط چت خود را به تغییر خواهیم داد پاسخ های هوش مصنوعی را به صورت پویا نمایش دهیدبشر
بروزرسانی pages/index.tsx
import { useState } from "react";
export default function Home() {
const [query, setQuery] = useState("");
const [conversation, setConversation] = useState<{ user: string; ai: string }[]>([]);
const handleSubmit = async () => {
const res = await fetch("/api/ask", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ query }),
});
const data = await res.json();
setConversation([...conversation, { user: query, ai: data.response }]);
setQuery("");
};
return (
<div className="container mx-auto p-6">
<h1 className="text-2xl font-bold">AI Agent Chat</h1>
<div className="chat-box mt-4 p-4 border rounded">
{conversation.map((msg, index) => (
<div key={index} className="mt-2">
<p className="text-blue-600">User: {msg.user}</p>
<p className="text-gray-700">AI: {msg.ai}</p>
</div>
))}
</div>
<input
type="text"
placeholder="Ask something..."
value={query}
onChange={(e) => setQuery(e.target.value)}
className="w-full p-2 border rounded mt-4"
/>
<button onClick={handleSubmit} className="mt-4 bg-blue-500 text-white p-2 rounded">Ask</button>
</div>
);
}
پیشرفت های احتمالی:
✅ پیاده سازی ادغام API خارجی (به عنوان مثال ، واکشی داده های دنیای واقعی).
✅ معرفی هوش مصنوعی چند مدرن (پشتیبانی از تصاویر ، صدا و اسناد).
ation عامل AI را مستقر کنید Vercel برای استفاده از تولیدبشر
✅ بهبود UI / X برای یک تجربه گپ تعاملی تر.
✅ اضافه کردن پاسخهای هوش مصنوعی شخصی بر اساس پروفایل کاربر.
این دستیار با هوش مصنوعی اکنون برای برنامه های دنیای واقعی مانند آماده است پشتیبانی مشتری ، اتوماسیون و اجرای کار هوشمندبشر آماده است تا بیشتر آن را ببرد؟ بیایید ساختمان را ادامه دهیم! 💡
🔗 به خبرنامه بپیوندید: https://bobbyhalljr.dev/newsletter