ایجنت‌ها

ساخت ایجنت، اولین قدم‌ها

ساخت ایجنت، اولین قدم‌ها، راهنمای فارسی از مجموعهٔ «ایجنت‌ها» در وبلاگ آیرا. بازنویسی‌شده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

نوشتهٔ به‌روزرسانی: ۳ دقیقه مطالعه
تصویر مقالهٔ ساخت ایجنت، اولین قدم‌ها

خیلی‌ها فکر می‌کنن ساخت یه AI agent کار یه تیم بزرگ با GPU مخصوصه. واقعیت اینه که با یه API key و چند خط Python می‌تونی اولین ایجنت کارآمدت رو بسازی. این مقاله یه مسیر عملی ارائه می‌ده، نه تئوری صرف.

ایجنت دقیقاً چیه؟

یه چت‌بات ساده فقط ورودی می‌گیره و خروجی می‌ده. اما یه ایجنت سه تا چیز اضافه داره:

۱. حلقهٔ تصمیم‌گیری (ReAct loop): مدل فکر می‌کنه، عمل می‌کنه، نتیجه می‌بینه، دوباره فکر می‌کنه. ۲. ابزار (Tools): ایجنت می‌تونه به دنیای بیرون دست بزنه، وب، کد، دیتابیس، API. ۳. حافظه: حداقل در سطح مکالمه، و در نسخه‌های پیشرفته‌تر در سطح بلندمدت.

به زبان ساده‌تر: ایجنت یه LLM‌ه که اجازه داره کاری انجام بده، نه فقط حرف بزنه.

پیش‌نیازها

برای ساخت اولین ایجنت فقط به این‌ها نیاز داری:

  • Python 3.10+
  • یه API key از OpenAI، Anthropic یا یه مدل رایگان از Google AI Studio (Gemini)
  • کتابخانهٔ openai یا anthropic

اگه بودجه نداری، با Gemini Flash که tier رایگان خوبی داره شروع کن.

ساده‌ترین ایجنت ممکن

import anthropic
import json

client = anthropic.Anthropic()

tools = [
    {
        "name": "calculator",
        "description": "محاسبات ریاضی انجام می‌ده",
        "input_schema": {
            "type": "object",
            "properties": {
                "expression": {"type": "string", "description": "عبارت ریاضی مثل '2+2'"}
            },
            "required": ["expression"]
        }
    }
]

def run_tool(name, inputs):
    if name == "calculator":
        return str(eval(inputs["expression"]))

messages = [{"role": "user", "content": "۱۲۳ ضربدر ۴۵۶ چقدره؟"}]

while True:
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        tools=tools,
        messages=messages
    )
    
    if response.stop_reason == "end_turn":
        print(response.content[0].text)
        break
    
    # ایجنت می‌خواد ابزار استفاده کنه
    tool_use = next(b for b in response.content if b.type == "tool_use")
    result = run_tool(tool_use.name, tool_use.input)
    
    messages.append({"role": "assistant", "content": response.content})
    messages.append({
        "role": "user",
        "content": [{"type": "tool_result", "tool_use_id": tool_use.id, "content": result}]
    })

این حلقه ادامه می‌ده تا مدل بگه کارش تموم شده. این دقیقاً همون ReAct pattern‌ه.

یه ابزار واقعی اضافه کن: جستجوی وب

ایجنت بدون اطلاعات به‌روز، نصفه‌ست. با Tavily API (که tier رایگان داره) می‌تونی ابزار جستجو اضافه کنی:

import requests

def web_search(query):
    resp = requests.post("https://api.tavily.com/search", json={
        "api_key": "tvly-...",
        "query": query,
        "max_results": 3
    })
    results = resp.json()["results"]
    return "\n".join([f"{r['title']}: {r['content'][:200]}" for r in results])

حالا ایجنت می‌تونه از اینترنت بخونه، محاسبه کنه، و جواب بده، همه در یه مکالمه.

فریم‌ورک‌ها یا از صفر؟

وقتی ایجنت‌ها پیچیده‌تر می‌شن، فریم‌ورک‌هایی مثل LangChain یا LangGraph کارت رو راحت‌تر می‌کنن، اما overhead هم دارن. برای یادگیری، ساختن از صفر خیلی مفیدتره چون می‌فهمی دقیقاً چی داره اتفاق می‌افته.

برای سیستم‌های چند-ایجنتی که چندتا ایجنت با هم کار می‌کنن، AutoGen مایکروسافت یا CrewAI گزینه‌های محبوبی هستن.

مهم‌ترین چیزی که اول یاد نمی‌گیری: مدیریت خطا

ایجنت‌ها در دنیای واقعی شکست می‌خورن، API قطع می‌شه، مدل ابزار اشتباه می‌خواد، حلقه بی‌نهایت می‌شه. از همون اول:

  • یه max_iterations بذار (مثلاً ۱۰ دور)
  • خطاهای ابزار رو به مدل برگردون (نه silent fail)
  • لاگ بگیر از هر action

بدون این‌ها، دیباگ ایجنت کابوسه.

سطح بعدی: حافظهٔ بلندمدت

ایجنت‌هایی که در هر مکالمه از صفر شروع می‌کنن، محدودیت بزرگی دارن. یه ایجنت واقعاً مفید باید پروژه‌ات رو بشناسه، تاریخچهٔ تصمیماتت رو بدونه، و با گذر زمان بهتر بشه.

این همون چیزیه که در حوزهٔ کدنویسی، AiraCode ارائه می‌ده، یه ایجنت کدنویسی ترمینال که حافظهٔ پیوسته از پروژه‌ات داره، نه فقط از مکالمه. مفهوم پشتشو در شناخت پیوسته می‌تونی بخونی.

جمع‌بندی

ساخت اولین ایجنت یه حلقهٔ ساده‌ست: مدل فکر می‌کنه، ابزار می‌زنه، نتیجه می‌گیره، دوباره فکر می‌کنه. پیچیدگی واقعی در مدیریت خطا، حافظه، و هماهنگی چند ایجنته، نه در خود حلقه.

بهترین یادگیری؟ یه ابزار ساده (ماشین‌حساب، جستجو، خواندن فایل) بساز و همین حلقه رو با دستت پیاده کن. بعد از یه مرحله debug واقعی، همه چیز جا می‌افته.

همچنین بخوان

#ایجنت‌ها

ادامهٔ مسیر

همهٔ مقاله‌ها ←

بیشتر در «ایجنت‌ها»