در سال های اخیر، مدل های زبانی بزرگ (LLMS) مانند GPT و Cloude توانسته اند تعریف مارا از هوش مصنوعی به طور جدی تغییر دهند. این مدل ها فقط ابزار هایی برای تولید متن نیستند، بلکه می توانند به عنوان عامل های هوشمند (Agent AI) نیز نقش ایفا کنند. عوامل دیجیتالی که قادرند به صورت مستقل تصمیم گیری، مکالمه و حتی حل مسئله کنند.
هدف پروژه
ایده اصلی این پروژه ساختن یک 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."
نتیجه گیری
این پروژه نه تنها تجربه ای عالی برای کار با مدل های زبان بزرگ خواهد بود، بلکه دیدگاه را نسبت به طراحی Agent های هوش مصنوعی متحول کرد. اگر به توسعه سیستم های هوشمند علاقه مند هستید، ساخت چنین سروی می تواند نقطه شروع فوق العاده ای باشد.
برای دیدن کد کامل پروژه می توانید به GitHub نویسنده مراجعه کنید.