در سالهای اخیر، مدلهای زبانی بزرگ (LLMs) مانند GPT و Claude تحول چشمگیری در درک ما از هوش مصنوعی ایجاد کردهاند. این مدلها دیگر صرفاً ابزارهایی برای تولید متن نیستند، بلکه میتوانند بهعنوان عوامل هوشمند (AI Agents) نیز ایفای نقش کنند — عوامل دیجیتالی مستقلی که توانایی تصمیمگیری، مکالمه و حل مسئله را دارند.
هدف پروژه
ایده اصلی این پروژه ساختن یک API Server بود که بتواند:
- به صورت چندمدلی کار کند(OpenAI,Anthropic و مدل های دیگر….)
- با ابزار های مختلف ادغام می شود (مثل ابزار جستجو، کدنویسی، فایل خوانی و….)
- با داشتن حافظه، بتواند مکالمات و تصمیم گیری های قبلی را به یاد آورد
- به راحتی گسترش یابد
فناوری های مورد استفاده
فناوری | کاربرد |
---|---|
Python | زبان اصلی پروژه |
FastAPI | فریمورک سبک و سریع برای ساخت API |
OpenAI API / Anthropic API | برای تعامل با مدلهای LLM |
LangChain | برای مدیریت Agent، ابزارها، و حافظه |
Pydantic | برای اعتبارسنجی دادهها و ساختاردهی JSON |
Uvicorn | اجرای سرور FastAPI به صورت async |
ساختار کلی سیستم
سرور Agent طراحی شده از چند بخش اصلی تشکیل شده است:
Agent Core (هسته عامل)
این بخش مسئول تصمیم گیری،ارسال درخواست به مدل، و ترکیب پاسخ ها با ابزار های مختلف.
Memory(حافظه)
برای آن که Agent بتواند گفتگوها یا عملیات قبلی را یادبگیرد و به آن ارجاع دهد، از یک سیستم حافظه (Memory) استفاده شده است.
Tools (ابزارها)
ابزارهایی مانند خواندن فایل، جستجو در وب، اجرای کدپایتون یا حتی تعامل با پایگاه دادها در قالب Plugin به Agent اضافه شدند.
Model Interfaces
این بخش واسط بین Agent و مدل های LLM مانند GPT-4 یا Claude است. بسته به انتخاب کاربر، Agent می تواند از یکی از این مدل ها استفاده کند.
پیاده سازی Agent Server با FastAPI
ساختار پروژه طوری طراحی شده که از FastAPI برای دریافت درخواست های کاربر استفاده می کند. مثال ساده ای از یک endpoint به شکل زیر است:
@app.post("/agent")
async def run_agent(request: AgentRequest):
response = agent.run(input=request.query)
return {"response": response}
در این مثال، Agent Request یک مدل داده ای (Pydantic) است که کوئری کاربر دریافت کرده و agent پاسخ را تولید می کند.
قابلیت چندمدلی (Multi-Model Support)
یکی از ویژگی های جذاب این پروژه این است که از چندین LLM پشتیبانی می کند. با اضافه کردن یک پارامتر ساده در کوئری API، می توان بین OpenAI و Anthropic سوئیچ کرد:
{
"query": "What's the weather like?",
"model": "openai" // یا "anthropic"
}
توسعه پذیری آسان
با کمک معماری ماژولار، افزودن ابزار های جدید بسیار ساده است. فقط کافی است یک تابع جدید تعریف کرده و آن را به Agent معرفی کنید:
def get_weather(location: str):
return f"The weather in {location} is sunny."
نتیجه گیری
این پروژه نهتنها فرصتی عالی برای کار عملی با مدلهای زبانی بزرگ (LLMs) فراهم میکند، بلکه نگرش شما را نسبت به طراحی Agentهای هوش مصنوعی دگرگون خواهد کرد. اگر به توسعه سیستمهای هوشمند علاقهمند هستید، ساخت چنین سرویسی میتواند نقطهی شروعی ایدهآل برای ورود به این حوزه باشد.
برای مشاهده کد کامل پروژه، میتوانید به صفحه GitHub نویسنده مراجعه کنید.