Cohere Command — революция, которую мы пропустили
- суббота, 22 марта 2025 г. в 00:00:02
Исходный код, разобранный в данной статье, опубликован в этом репозитории
Длительный промежуток времени я искал модель, специально заточенную под вызов инструментов для внешних интегираций. Критерием поиска являлось минамальное колличество галлюцинаций при использовании железа с потребительского рынка
Если десятки миллиардов параметров языковой модели потребуют покупать специлизированную видеокарту стоимостью 5 тысяч долларов, которую ещё нужно привезти и вставить в подходящую системную плату, такой бизнес нельзя масштабировать
Была поставлена задача: максимально использовать существующее железо. Исторически сложилось так, что офис укомплектован системными блоками с 32ГБ оперативной памяти и видеокартами RTX 3060 с 12ГБ видеопамяти
В библиотеке моделей ollama была найдена модель command-r. Изначально, инструменты в ней были сломаны, однако, так как в issues началась ругонь, была получена копипаста, чтобы их починить.
И модель запустилась, заняв 90% ресурсов описанного выше системного блока. Вызов инструментов заработал, без тормозов и галюнов, средствами видеокарты. Это самый лучший вариант, так как мы максимально используем наше минимальное железо
Протестировали вызов инструментов. Есть различия с OpenAI: так как модель изначально позицинирует себя как оптимизированная под вызов внешних API, любое действие пользователя приходится прописывать как отдельный инструмент. В этом есть плюсы: поведение чата предсказуемо, если модель пишет, что товар добавлен в корзину, значит вместо текста-заглушки именно был отправлен HTTP запрос на сервер.
У cohere
, производителя LLM, помимо облака, файлы модели в опенсорсе. Это тоже самое, что получить GGUF от GPT-4o и запустить локально. В итоге, получилось так, что на само облако мы не обратили внимание
У cohere
есть free tier на 20 запросов в минуту на api key. Ограничение на количество времени, сколько живет trial токен я не нашел
Цена радикально более демократичная, чем в OpenAi. Однако, это не то, про что я хотел написать статью: А что если сделать карусель триальных токенов?
Наш движок роя агентов, для подключения облачных LLM, использует адаптер: чтобы мы могли выскочить из Yandex Cloud или любого другого облака, если оно взвинтит цену подписки
import { Adapter, addCompletion, RoundRobin } from "agent-swarm-kit";
import { CompletionName } from "../enum/CompletionName";
import { CohereClientV2 } from "cohere-ai";
const getCohere = (token: string) =>
new CohereClientV2({
token,
});
const COHERE_TOKENS = [process.env.COHERE_API_KEY, /* Вы знаете, что делать :-) */];
addCompletion({
completionName: CompletionName.CohereCompletion,
getCompletion: RoundRobin.create(COHERE_TOKENS, (apiKey) =>
Adapter.fromCohereClientV2(getCohere(apiKey), "command-r-08-2024")
),
});
Соответственно, помимо запуска command-r в облаке, в академический проект был добавлен коннектор для Ollama
import { Adapter, addCompletion } from "agent-swarm-kit";
import { CompletionName } from "../enum/CompletionName";
import { singleshot } from "functools-kit";
import { Ollama } from "ollama";
const getOllama = singleshot(
() => new Ollama({ host: "http://127.0.0.1:11434" })
);
addCompletion({
completionName: CompletionName.OllamaCompletion,
getCompletion: Adapter.fromOllama(getOllama(), "oybekdevuz/command-r", ""),
});
И коннектор для LMStudio. Дополнительно, GGUF образ модели был выгружен в HuggingFace по этой ссылке, для удобства запуска тем, кто предпочитает запускать модели мышкой, а не из консоли
import { Adapter, addCompletion } from "agent-swarm-kit";
import { singleshot } from "functools-kit";
import OpenAI from "openai";
import { CompletionName } from "../enum/CompletionName";
const getOpenAI = singleshot(
() => new OpenAI({ baseURL: "http://127.0.0.1:1234/v1", apiKey: "noop" })
);
addCompletion({
completionName: CompletionName.LMStudioCompletion,
getCompletion: Adapter.fromLMStudio(getOpenAI(), "command_r_gguf"),
});
От себя добавлю, что локальная и облачная модели ведут себя абсолютно одинакого, что большой плюс, так как я не знаю, сколько ещё такая веселая карусель проработает...
Надеюсь, компании cohere
моя веселая карусель не будет сильно грустной и накладной по финансам(