Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их в ответе.
Чат-бот vs Агент
| Чат-бот | Агент | |
|---|---|---|
| Источник данных | Только обучение | API, файлы, поиск |
| Действия | Только текст | Вызовы инструментов |
| Циклы | Один запрос | Несколько итераций |
| Применение | Вопрос-ответ | Автоматизация задач |
ReAct паттерн
ReAct = Reasoning + Acting. Агент работает по циклу:
Вопрос пользователя
↓
REASON: Claude анализирует — нужен ли инструмент?
↓
ACT: Вызов инструмента (get_weather, read_file, ...)
↓
OBSERVE: Получаем результат инструмента
↓
REASON: Claude анализирует результат
↓
(повторяем пока не получим финальный ответ)
↓
ANSWER: Финальный текстовый ответ
Простой агент
import anthropic
client = anthropic.Anthropic()
TOOLS = [
{
"name": "get_time",
"description": "Возвращает текущее время",
"input_schema": {"type": "object", "properties": {}}
}
]
def get_time() -> str:
from datetime import datetime
return datetime.now().strftime("%H:%M:%S")
def run_agent(question: str) -> str:
messages = [{"role": "user", "content": question}]
while True:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=512,
tools=TOOLS,
messages=messages,
)
if response.stop_reason == "end_turn":
return next(b.text for b in response.content if hasattr(b, "text"))
messages.append({"role": "assistant", "content": response.content})
results = []
for block in response.content:
if block.type == "tool_use":
if block.name == "get_time":
result = get_time()
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
messages.append({"role": "user", "content": results})
print(run_agent("Который сейчас час?"))
Типичные инструменты агентов
- Веб-поиск — актуальная информация
- Чтение файлов — локальные документы
- HTTP-запросы — внешние API
- Выполнение кода — вычисления
- База данных — хранение и поиск данных
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!