Messages API: формат, ответ и чатбот
Структура messages с role и content, объект Message (id, stop_reason, usage), 'слова в рот Claude' через assistant-префикс, few-shot промптинг и построение простого чатбота.
Напишите функцию translate(word, language), которая через Claude переводит слово и возвращает только переведённое слово без преамбулы. Используйте few-shot с 2-3 примерами в messages.
Скопируйте и адаптируйте под свой контекст. Текст в треугольных скобках — то, что нужно заменить.
from anthropic import Anthropic
client = Anthropic()
conversation = []
while True:
user_input = input("You: ")
if user_input.lower() == "quit":
break
conversation.append({"role": "user", "content": user_input})
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=500,
messages=conversation
)
reply = response.content[0].text
print(f"Claude: {reply}")
conversation.append({"role": "assistant", "content": reply})- Начинают messages с assistant-сообщения — API вернёт ошибку.
- Ставят два assistant-сообщения подряд без user между ними — нарушение порядка чередования.
- Не добавляют ответ Claude в conversation_history — контекст теряется.
- Few-shot через messages удобнее чем в system prompt — примеры видны в истории диалога.
- Prefill (assistant message в конце) заставляет Claude продолжить с нужной строки — полезно для форматирования.
- stop_reason='max_tokens' означает усечение — увеличьте max_tokens или укоротите промпт.
Чатботы, мультиходовые задачи, few-shot классификация, любое приложение требующее контекста диалога.
Одиночные изолированные запросы без контекста — хранить длинную историю дорого по токенам.