Cohere
Конвертация Cohere API в Meridian — маппинг параметров, обработка сообщений, reasoning/thinking и преобразование инструментов.
Обзор
Cohere использует структуру API, отличную от формата OpenAI. Meridian выполняет следующие преобразования:
- Переименование параметров — например,
max_completion_tokens→max_tokens,top_p→p,stop→stop_sequences. - Преобразование контента сообщений — поддерживаются строки и массивы блоков контента.
- Преобразование инструментов — определения tools и
tool_choiceприводятся к формату Cohere. - Преобразование thinking/reasoning — параметры
reasoningмапятся в структуруthinkingCohere. - Преобразование 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_p → p | Прямое проксирование 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.effort→thinking.type(мапится в"enabled"или"disabled").reasoning.max_tokens→thinking.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 со следующими маппингами:
- Функция
name→name(без изменений). - Функция
parameters→parameters(гибкий 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_SEQUENCE→stop,MAX_TOKENS→length,TOOL_CALL→tool_calls.input_tokens→prompt_tokens|output_tokens→completion_tokens.cached_tokens→prompt_tokens_details.cached_tokens(если присутствует).- Аргументы tool call конвертируются из строки в строку (преобразование не требуется, Cohere использует строковый формат).
Стриминг
Последовательность событий: message-start → content-start → content-delta → content-end → message-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_p → p | Прямое проксирование 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.
Преобразование ответа
text→message|tool_use→function_call.input_tokens/output_tokensсохраняются.- Детали токенов с поддержкой cached tokens.
Стриминг
Последовательность событий: message-start → content-start → content-delta → content-end → message-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.float→data[].embedding.meta.tokens→ информация об usage.- Обрабатываются несколько типов embedding.
4. List Models
Запрос: GET /v1/models?page_size={defaultPageSize}.
Маппинг полей: данные модели конвертируются в стандартный формат.
Пагинация: курсорная — через next_page_token.
Замечание: фильтры endpoint и default_only доступны через extra_params.