Claude vs OpenAI и что дальше

Итоговый урок: чем отличаются два главных API, как писать переносимый код и куда двигаться дальше.

Anthropic и OpenAI концептуально близки (сообщения, роли, tool use, стриминг), но отличаются именами полей и формой ответа. Понимая модель «запрос-ответ», вы легко переносите код.

Карта отличий

АспектAnthropic (Claude)OpenAI (GPT)
Методmessages.createchat.completions.create
Системная инструкцияпараметр systemсообщение role=system
max_tokensобязателеннеобязателен
Текст ответаблоки content[].textchoices[0].message.content
Причина остановкиstop_reasonfinish_reason
Токеныusage.input/output_tokensusage.prompt/completion_tokens
Инструментыблоки tool_use/tool_resulttool_calls в сообщении

Как писать переносимый код

Спрячьте провайдера за своим интерфейсом (адаптером). Бизнес-логика работает с вашими типами «сообщение/ответ», а адаптер переводит их в формат конкретного API и обратно. Тогда смена провайдера — это новый адаптер, а не переписывание приложения.

class LLMClient:
    def complete(self, system, messages) -> str: ...

class AnthropicClient(LLMClient):
    def complete(self, system, messages):
        r = anthropic_sdk.messages.create(model=..., system=system,
                                          max_tokens=512, messages=messages)
        return "".join(b.text for b in r.content if b.type == "text")

class OpenAIClient(LLMClient):
    def complete(self, system, messages):
        msgs = [{"role": "system", "content": system}] + messages
        r = openai_sdk.chat.completions.create(model=..., messages=msgs)
        return r.choices[0].message.content

Куда двигаться дальше

  • Фреймворки (например, для оркестрации цепочек и RAG) экономят шаблонный код, но сначала важно понимать, что под капотом — этому был посвящён курс.
  • Агенты: циклы, где модель сама планирует и вызывает инструменты много раз подряд для решения задачи. Tool use из раздела 4 — их основа.
  • RAG: углубиться в векторные БД, чанкинг, ранжирование (мост — урок про эмбеддинги).
  • Структурированные пайплайны: комбинируйте детерминированный код и LLM-шаги, оценивайте качество evals.

Главное, что стоит унести из курса

  • LLM API — это «запрос-ответ» без состояния; история, инструменты, стриминг — надстройки.
  • Надёжность — это код вокруг модели: ретраи, фолбэки, валидация, наблюдаемость, тесты.
  • Контролируйте стоимость и безопасность с самого начала, а не «потом».

Итог

  • Claude и OpenAI близки концептуально; отличия — в именах полей и форме ответа.
  • Адаптер за единым интерфейсом делает код переносимым между провайдерами.
  • Дальше — агенты, RAG и фреймворки, но фундамент один: цикл «запрос-ответ» и инженерия вокруг него.
Проверьте себя
1. Где находится текст ответа у OpenAI и у Anthropic соответственно?
AВ обоих — в content[].text
BOpenAI: choices[0].message.content; Anthropic: блоки content[].text
COpenAI: response.text; Anthropic: choices[0]
DВ обоих — в usage
2. Как сделать код переносимым между Claude и OpenAI?
AИспользовать только один провайдер навсегда
BСпрятать провайдера за единым интерфейсом-адаптером; бизнес-логика работает с вашими типами
CКопировать код для каждого провайдера по всему проекту
DХранить ответы обоих провайдеров в кэше
3. Что лежит в основе LLM-агентов?
AКэширование промптов
BЦикл tool use: модель планирует и многократно вызывает инструменты для решения задачи
CТолько стриминг
DBatch-обработка
Поддержать проект