Поддерживаемые провайдеры

Cohere

Конвертация Cohere API в Meridian — маппинг параметров, обработка сообщений, reasoning/thinking и преобразование инструментов.

Обзор

Cohere использует структуру API, отличную от формата OpenAI. Meridian выполняет следующие преобразования:

  • Переименование параметров — например, max_completion_tokensmax_tokens, top_pp, stopstop_sequences.
  • Преобразование контента сообщений — поддерживаются строки и массивы блоков контента.
  • Преобразование инструментов — определения tools и tool_choice приводятся к формату Cohere.
  • Преобразование thinking/reasoning — параметры reasoning мапятся в структуру thinking Cohere.
  • Преобразование response format — обработка JSON-схемы адаптирована под формат Cohere.

Поддерживаемые операции

ОперацияБез стримингаСтримингЭндпоинт
Chat Completions/v2/chat
Responses API/v2/chat
Embeddings/v2/embed
List Models/v1/models
Text Completions
Image Generation
Speech (TTS)
Transcriptions (STT)
Files
Batch

Не поддерживаемые операции (❌): Text Completions, Image Generation, Speech, Transcriptions, Files и Batch не поддерживаются апстримом Cohere API. Запросы к ним возвращают UnsupportedOperationError.


1. Chat Completions

Параметры запроса

Маппинг параметров

ПараметрПреобразование
max_completion_tokensПереименован в max_tokens
temperature, top_ppПрямое проксирование temperature; top_p переименован в p
stopПереименован в stop_sequences
frequency_penalty, presence_penaltyПрямое проксирование
response_formatПреобразован в структурированный формат (см. Response Format)
toolsРеструктуризация схемы (см. Преобразование инструментов)
tool_choiceМаппинг типов (см. Преобразование инструментов)
reasoningМаппинг в thinking (см. Reasoning / Thinking)
userЧерез extra_params (не поддерживается напрямую в Cohere v2 API)
top_kЧерез extra_params (специфика Cohere)

Игнорируемые параметры

Следующие параметры тихо игнорируются: logit_bias, logprobs, top_logprobs, seed, parallel_tool_calls, service_tier.

Дополнительные параметры

Используйте extra_params (SDK) или передавайте напрямую в теле запроса (Gateway) для полей, специфичных для Cohere:

curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cohere/command-r-plus",
    "messages": [{"role": "user", "content": "Hello"}],
    "top_k": 40,
    "safety_mode": "STRICT",
    "log_probs": true,
    "strict_tool_choice": false
  }'

Reasoning / Thinking

Документация: см. Reasoning.

Маппинг параметров

  • reasoning.effortthinking.type (мапится в "enabled" или "disabled").
  • reasoning.max_tokensthinking.token_budget (бюджет токенов на thinking).

Критичные ограничения

  • Минимальный бюджет: требуется не менее 1 токена; запросы с 0 токенов будут переведены в disabled.
  • Динамический бюджет: значение -1 автоматически приводится к 1.

Пример

// Запрос
{"reasoning": {"effort": "high", "max_tokens": 2048}}

// Преобразование для Cohere
{"thinking": {"type": "enabled", "token_budget": 2048}}

Преобразование сообщений

Обработка контента

  • Строковый контент: сообщения могут иметь простой строковый контент.
  • Блоки контента: сообщения могут иметь массивы блоков контента (text, images, thinking).
  • Преобразование изображений: поддерживаются блоки image_url с URL.
  • Tool calls: конвертируются из tool calls assistant-сообщений в формат Cohere.
  • Tool messages: результаты tool call передаются с tool_call_id.

Преобразование инструментов

Определения инструментов адаптируются под формат Cohere со следующими маппингами:

  • Функция namename (без изменений).
  • Функция parametersparameters (гибкий JSON-формат).
  • Strict-режим (strict: true) тихо отбрасывается (не поддерживается).

Маппинг tool_choice:

  • "none""NONE";
  • "auto" или "required""REQUIRED" или "AUTO";
  • Выбор конкретного инструмента → "REQUIRED" (Cohere использует выбор на уровне функции).

Response Format

Поддерживаемые форматы:

  • text — обычный текстовый ответ;
  • json_object — структурированный JSON-ответ;
  • json_schema — JSON с валидацией по схеме (конвертируется в json_object).

Схема передаётся через поле response_format.json_schema.

Преобразование ответа

Маппинг полей

  • finish_reason: COMPLETE / STOP_SEQUENCEstop, MAX_TOKENSlength, TOOL_CALLtool_calls.
  • input_tokensprompt_tokens | output_tokenscompletion_tokens.
  • cached_tokensprompt_tokens_details.cached_tokens (если присутствует).
  • Аргументы tool call конвертируются из строки в строку (преобразование не требуется, Cohere использует строковый формат).

Стриминг

Последовательность событий: message-startcontent-startcontent-deltacontent-endmessage-end.

Типы delta-событий:

  • content-delta с текстом → контент сообщения;
  • content-delta с thinking → reasoning-текст;
  • tool-call-start/delta/end → события tool call;
  • tool-plan-delta → вывод планирования tool.

Нюансы


2. Responses API

Responses API использует тот же эндпоинт /v2/chat, но конвертирует между форматом OpenAI Responses и форматом Cohere.

Параметры запроса

Маппинг параметров

ПараметрПреобразование
max_output_tokensПереименован в max_tokens
temperature, top_ppПрямое проксирование temperature; top_p переименован в p
instructionsСтановится system-сообщением
text.formatПреобразован в response_format
toolsРеструктуризация схемы (см. Chat Completions)
tool_choiceМаппинг типов (см. Chat Completions)
reasoningМаппинг в thinking (см. Reasoning / Thinking)
stopЧерез extra_params, переименован в stop_sequences
top_kЧерез extra_params (специфика Cohere)
frequency_penalty, presence_penaltyЧерез extra_params

Дополнительные параметры

Используйте extra_params (SDK) или передавайте напрямую в теле запроса (Gateway):

curl -X POST http://localhost:8080/v1/responses \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cohere/command-r-plus",
    "input": "Hello, how are you?",
    "top_k": 40,
    "stop": [".", "!"]
  }'

Input и Instructions

  • Input: строка преобразуется в user-сообщение, массив конвертируется в сообщения.
  • Instructions: становится system-сообщением (добавляется в начало массива сообщений).

Поддержка инструментов

Поддерживаемые типы: function.

Преобразования инструментов те же, что в Chat Completions.

Преобразование ответа

  • textmessage | tool_usefunction_call.
  • input_tokens / output_tokens сохраняются.
  • Детали токенов с поддержкой cached tokens.

Стриминг

Последовательность событий: message-startcontent-startcontent-deltacontent-endmessage-end.

Особенности обработки:

  • Аргументы tool call аккумулируются по чанкам;
  • Синтетические события output_item.added эмитятся для text/reasoning;
  • Стабильные ID элементов формируются как msg_{messageID}_item_{outputIndex}.

3. Embeddings

Параметры запроса

Маппинг параметров

ПараметрПреобразование
input (текст или массив)Преобразован в массив texts
dimensionsПереименован в output_dimension
input_typeЧерез extra_params (обязательный, по умолчанию "search_document")
embedding_typesЧерез extra_params (массив типов embedding)
truncateЧерез extra_params (как обрабатывать длинные входы)
max_tokensЧерез extra_params (максимум токенов на embedding одного входа)

Дополнительные параметры

Используйте extra_params для опций embedding, специфичных для Cohere:

curl -X POST http://localhost:8080/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cohere/embed-english-v3.0",
    "input": ["text to embed"],
    "input_type": "search_query",
    "embedding_types": ["float"],
    "truncate": "START"
  }'

Критичные замечания

  • Input Type обязателен: модели Cohere v3+ требуют параметр input_type (по умолчанию "search_document").
  • Embedding Types: укажите, какие типы embedding возвращать (например, "float", "int8").

Преобразование ответа

  • embeddings.floatdata[].embedding.
  • meta.tokens → информация об usage.
  • Обрабатываются несколько типов embedding.

4. List Models

Запрос: GET /v1/models?page_size={defaultPageSize}.

Маппинг полей: данные модели конвертируются в стандартный формат.

Пагинация: курсорная — через next_page_token.

Замечание: фильтры endpoint и default_only доступны через extra_params.

Содержание