Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Инструменты и первый агент
tools_and_agents

Инструменты и первый агент

Создание инструментов через декоратор @tool, конфигурация агента с create_agent, структурированный вывод, контекст выполнения.

Инструменты и первый агент

Инструменты позволяют языковой модели взаимодействовать с внешним миром. Без них модель может только генерировать текст.

#Создание инструментов

Самый простой способ создать инструмент — декоратор @tool из langchain.tools. Декоратор автоматически извлекает имя функции как имя инструмента, использует docstring как описание и определяет параметры из аннотаций типов.

from langchain.tools import tool @tool def get_weather(city: str) -> str: """Получить прогноз погоды для указанного города.""" return f"В городе {city} сегодня солнечно, +25°C"

Любая Python-функция может быть инструментом — достаточно передать её в create_agent:

def search_database(query: str, limit: int = 10) -> str: """Поиск в базе данных по запросу.""" return f"Найдено {limit} результатов для: {query}" agent = create_agent( model="openai:gpt-4o-mini", tools=[search_database], )

#Правила создания инструментов

Инструмент — это интерфейс для модели. Имя, описание и имена параметров становятся частью промпта. Плохая документация приводит к некорректным вызовам. Всегда указывайте типы параметров — модель использует их для генерации правильных аргументов.

Инструменты могут получать контекст выполнения через параметр ToolRuntime, что позволяет обращаться к данным сессии изнутри инструмента.

Для возврата структурированных данных используйте Pydantic-модели — модель сможет заполнить все поля по схеме.

#Первый агент с create_agent

Агент создаётся через фабрику create_agent с тремя основными параметрами: модель, инструменты и системный промпт. Модель указывается строкой в формате "провайдер:модель".

from langchain.agents import create_agent from langchain.tools import tool @tool def calculate(expression: str) -> str: """Вычислить математическое выражение.""" return str(eval(expression)) @tool def get_current_time() -> str: """Получить текущее время.""" from datetime import datetime return datetime.now().strftime("%Y-%m-%d %H:%M:%S") agent = create_agent( model="openai:gpt-4o-mini", tools=[calculate, get_current_time], system_prompt="Ты помощник. Используй инструменты для выполнения задач.", ) result = agent.invoke( {"messages": [{"role": "user", "content": "Сколько будет 15 * 37?"}]} ) print(result["messages"][-1].content_blocks)

Агент анализирует запрос, понимает, какой инструмент нужен, вызывает его с правильными аргументами и формирует ответ на основе результата.

#Структурированный вывод

Через параметр response_format можно указать Pydantic-схему для ответа агента. В этом случае result["structured_response"] будет содержать валидированный объект.

#Именование и контекст

При встраивании агента в мультиагентную систему полезно задать имя через параметр name. Для передачи данных сессии (идентификатор пользователя, роль, ключи API) используется context с определённой схемой context_schema.

#Память агента

Для сохранения контекста между вызовами используется чекпоинтер. При повторном использовании того же thread_id агент загружает историю диалога:

from langgraph.checkpoint.memory import InMemorySaver from langchain_core.utils.uuid import uuid7 agent = create_agent( model="openai:gpt-4o-mini", tools=[get_weather], checkpointer=InMemorySaver(), ) config = {"configurable": {"thread_id": str(uuid7())}} # Первый и второй вызов с одним config — агент помнит контекст

Далее: Основы LangGraph: состояние, узлы, рёбра