Інтеграція Anthropic Claude API з вебсайтом
Claude API від Anthropic надає доступ до сімейства Claude 3 (Haiku, Sonnet, Opus). Claude вирізняється довгим контекстним вікном (200K токенів у Claude 3), точністю дотримання інструкцій та відмінною роботою з кодом і структурованим текстом.
Базова інтеграція
use Anthropic\Anthropic;
$client = new Anthropic(['apiKey' => config('services.anthropic.api_key')]);
$message = $client->messages->create([
'model' => 'claude-3-5-haiku-20241022',
'max_tokens' => 1024,
'system' => 'Ви — асистент з документації продукту.',
'messages' => [
['role' => 'user', 'content' => $userQuestion],
],
]);
$answer = $message->content[0]->text;
Стримінг
import anthropic
client = anthropic.Anthropic()
async def stream_response(user_message: str):
with client.messages.stream(
model='claude-3-5-haiku-20241022',
max_tokens=1024,
messages=[{'role': 'user', 'content': user_message}],
) as stream:
for text in stream.text_stream:
yield text
Структурований вихід через інструменти (tool_use)
Claude підтримує tool_use для отримання структурованого JSON:
tools = [{
'name': 'extract_product_info',
'description': 'Витягти інформацію про товар з тексту',
'input_schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'price': {'type': 'number'},
'sku': {'type': 'string'},
'description': {'type': 'string'},
'features': {'type': 'array', 'items': {'type': 'string'}},
},
'required': ['name', 'price'],
},
}]
response = client.messages.create(
model='claude-3-5-sonnet-20241022',
max_tokens=1024,
tools=tools,
messages=[{
'role': 'user',
'content': f'Витягни інформацію про товар:\n\n{product_description}',
}],
)
# Витягаємо результат tool_use
for block in response.content:
if block.type == 'tool_use' and block.name == 'extract_product_info':
product_data = block.input
break
Довгий контекст (200K токенів)
Унікальна перевага Claude — можливість передати в контекст весь документ або кодову базу:
# Аналіз довгого PDF-документа (конвертуємо в текст)
with open('contract.txt', 'r') as f:
document = f.read()
response = client.messages.create(
model='claude-3-5-sonnet-20241022',
max_tokens=2048,
messages=[{
'role': 'user',
'content': f"Прочитай контракт та відповідай: які умови розірвання?\n\nКонтракт:\n{document}",
}],
)
Vision: Аналіз зображень
import base64
with open('screenshot.png', 'rb') as f:
image_data = base64.standard_b64encode(f.read()).decode('utf-8')
response = client.messages.create(
model='claude-3-5-sonnet-20241022',
max_tokens=1024,
messages=[{
'role': 'user',
'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/png', 'data': image_data}},
{'type': 'text', 'text': 'Опиши що зображено на скриншоті'},
],
}],
)
Порівняння з OpenAI
| Параметр | Claude 3.5 Sonnet | GPT-4o |
|---|---|---|
| Контекст | 200K токенів | 128K токенів |
| Дотримання інструкцій | Високе | Високе |
| Код | Дуже добре | Дуже добре |
| Ціна (вхідні) | $3 / 1M | $2.50 / 1M |
Терміни
Базова інтеграція з чатом: 1–2 дні. Структурований вихід + vision: +2 дні.







