Розробка AI-агента на базі LLM

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-агента на базі LLM
Середній
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Розвиток AI-агента на базі LLM

AI-агент на базі LLM — система, в якій мовна модель виступає "мозком", приймаючи рішення: що робити далі, які інструменти використовувати, як інтерпретувати результати. На відміну від RAG-системи або чатбота, агент не просто генерує відповідь — він виконує послідовність дій для досягнення мети.

Компоненти AI-агента

┌─────────────────────────────────────────┐
│                LLM (reasoning)           │
│  ┌─────────┐  ┌──────────┐  ┌────────┐ │
│  │Planning │  │ Tool     │  │Memory  │ │
│  │         │  │ Calling  │  │        │ │
│  └─────────┘  └──────────┘  └────────┘ │
└─────────────────────────────────────────┘
         ↓              ↓
    ┌─────────┐   ┌──────────────┐
    │ Actions │   │    Tools     │
    └─────────┘   ├──────────────┤
                  │ Web Search   │
                  │ Code Exec    │
                  │ DB Query     │
                  │ API Calls    │
                  │ File I/O     │
                  └──────────────┘

Паттерн ReAct: основа більшості агентів

ReAct (Reasoning + Acting) — паттерн, де модель чергує міркування та дії:

Thought: Потрібно знайти поточний курс USD/RUB
Action: search_web("курс долару центробанк сьогодні")
Observation: За даними центробанку на 28.03.2026: 1 USD = 89.43 RUB

Thought: Знайшов курс. Тепер можу розрахувати суму
Action: calculate(amount_usd=1500 * 89.43)
Observation: 134145.0

Thought: Розрахунок виконаний. Остаточна відповідь: 134 145 карбованців
Final Answer: При курсі 89.43 руб/долл, 1500 USD = 134 145 RUB.

Базова реалізація агента з OpenAI Tools

from openai import OpenAI
import json

client = OpenAI()

# Визначення інструментів
tools = [
    {
        "type": "function",
        "function": {
            "name": "search_documents",
            "description": "Пошук інформації у корпоративній базі знань",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "Пошуковий запит"},
                    "doc_type": {"type": "string", "enum": ["contract", "policy", "faq"]},
                },
                "required": ["query"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "execute_sql",
            "description": "Виконати SQL-запит до бази даних компанії",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "SQL-запит тільки SELECT"},
                },
                "required": ["query"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "send_email",
            "description": "Відправити email",
            "parameters": {
                "type": "object",
                "properties": {
                    "to": {"type": "string"},
                    "subject": {"type": "string"},
                    "body": {"type": "string"},
                },
                "required": ["to", "subject", "body"],
            },
        },
    },
]

# Обробники інструментів
def execute_tool(tool_name: str, tool_args: dict) -> str:
    if tool_name == "search_documents":
        results = vectorstore.similarity_search(tool_args["query"], k=3)
        return "\n".join([r.page_content for r in results])
    elif tool_name == "execute_sql":
        results = db.execute(tool_args["query"])
        return str(results[:20])  # Обмежуємо вихід
    elif tool_name == "send_email":
        email_service.send(**tool_args)
        return "Email успішно відправлений"
    return "Tool not found"

# Цикл агента
def run_agent(user_message: str, max_iterations: int = 10) -> str:
    messages = [
        {"role": "system", "content": "Ти — корпоративний AI-помічник. Використовуй інструменти для виконання завдань."},
        {"role": "user", "content": user_message},
    ]

    for iteration in range(max_iterations):
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=messages,
            tools=tools,
            tool_choice="auto",
        )

        message = response.choices[0].message

        # Якщо немає викликів інструментів — остаточна відповідь
        if not message.tool_calls:
            return message.content

        # Обробляємо виклики інструментів
        messages.append(message)

        for tool_call in message.tool_calls:
            tool_name = tool_call.function.name
            tool_args = json.loads(tool_call.function.arguments)

            result = execute_tool(tool_name, tool_args)

            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": result,
            })

    return "Перевищено максимальну кількість ітерацій"

Практичний кейс: агент для обробки запитів на закупку

Завдання: агент отримує запит на закупку від співробітника, перевіряє бюджет, знаходить підходящих поставщиків у реєстрі, створює чорновик договору, відправляє на узгодження.

Інструменти агента:

  • check_budget(department, category) — перевірка залишку бюджету
  • search_suppliers(category, requirements) — пошук поставщиків
  • generate_contract_draft(supplier_id, terms) — генерація договору
  • create_task_in_jira(title, description, assignee) — створення завдання
  • send_notification(user_id, message) — сповіщення

Метрики за 3 місяці:

  • Час обробки запиту: 4.5 дня → 2.1 години
  • Частка автоматично оброблених (без правок): 68%
  • Помилки (неправильний поставщик/перевищення бюджету): 4%

Guardrails: агент не виконує фінансові операції безпосередньо — тільки підготовку документів та сповіщення. Фінальне затвердження за людиною.

Memory: короткострокова та довгострокова

from langchain.memory import ConversationBufferWindowMemory, ConversationSummaryMemory

# Короткострокова пам'ять: останні N повідомлень
short_term = ConversationBufferWindowMemory(k=10, return_messages=True)

# Довгострокова: узагальнена історія
long_term = ConversationSummaryMemory(llm=ChatOpenAI(), max_token_limit=2000)

# Семантична пам'ять: важливі факти у векторному сховищі
from langchain.memory import VectorStoreRetrieverMemory
semantic_memory = VectorStoreRetrieverMemory(
    retriever=vectorstore.as_retriever(search_kwargs={"k": 3})
)

Графік

  • Розвиток базового агента з 3–5 інструментами: 2–3 тижні
  • Розвиток корпоративного агента з інтеграціями: 6–10 тижнів