برنامه نویسی

ساختن یک عامل 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

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

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

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

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