Інтеграція Anthropic Claude API Claude 4 Opus Sonnet Haiku

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Інтеграція Anthropic Claude API Claude 4 Opus Sonnet Haiku
Простий
~1 день
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Інтеграція 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 день