Інтеграція Anthropic Claude API: Claude 4, Opus, Sonnet, Haiku
Anthropic надає сімейство Claude з моделями для різних завдань. Claude Opus забезпечує максимальну якість для складних завдань. Claude Sonnet балансує якість/швидкість/вартість для більшості виробничих сценаріїв. Claude Haiku забезпечує швидкі та дешеві операції. Відмітні особливості Claude: велике контекстне вікно (200K токенів), надійний JSON вивід, Tool Use для агентів.
Базова інтеграція
import anthropic
from pydantic import BaseModel
client = anthropic.Anthropic() # ANTHROPIC_API_KEY із середовища
# Базовий виклик
def chat(prompt: str, model: str = "claude-sonnet-4-5") -> str:
message = client.messages.create(
model=model,
max_tokens=1024,
messages=[{"role": "user", "content": prompt}]
)
return message.content[0].text
# З системним запитом
def chat_with_system(system: str, prompt: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=2048,
system=system,
messages=[{"role": "user", "content": prompt}],
temperature=0.1,
)
return message.content[0].text
# Потокова передача
def stream_response(prompt: str):
with client.messages.stream(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
) as stream:
for text in stream.text_stream:
yield text
# Зір
def analyze_image(image_base64: str, media_type: str, question: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_base64,
},
},
{"type": "text", "text": question},
],
}]
)
return message.content[0].text
Tool Use (функціональний виклик)
tools = [{
"name": "get_weather",
"description": "Отримайте поточну погоду для міста",
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Назва міста"},
"units": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["city"]
}
}]
def run_agent_loop(user_message: str) -> str:
messages = [{"role": "user", "content": user_message}]
while True:
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=messages,
)
if response.stop_reason == "end_turn":
return response.content[-1].text
# Обробка блоків tool_use
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = dispatch_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": str(result),
})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
Кешування запитів для економії
# Кеш великих статичних запитів (документи, інструкції)
# Кеш зберігається 5 хвилин, економія до 90% на повторних викликах
def cached_analysis(system_doc: str, question: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system=[{
"type": "text",
"text": system_doc,
"cache_control": {"type": "ephemeral"}, # Кешуйте цей блок
}],
messages=[{"role": "user", "content": question}]
)
return message.content[0].text
Ціни моделей Claude (2025)
| Модель | Input (1M) | Output (1M) | Контекст |
|---|---|---|---|
| claude-opus-4 | $15 | $75 | 200K |
| claude-sonnet-4-5 | $3 | $15 | 200K |
| claude-haiku-4-5 | $0.80 | $4 | 200K |
Графік
- Базова інтеграція: 0,5–1 день
- Tool Use + петля агента: 2–3 дні
- Кешування запитів + оптимізація вартості: 1 день







