Cohere Command — революция, которую мы пропустили. cohere.. cohere. JavaScript.. cohere. JavaScript. llm.. cohere. JavaScript. llm. lmstudio.. cohere. JavaScript. llm. lmstudio. ollama.. cohere. JavaScript. llm. lmstudio. ollama. openai.. cohere. JavaScript. llm. lmstudio. ollama. openai. python.. cohere. JavaScript. llm. lmstudio. ollama. openai. python. TypeScript.. cohere. JavaScript. llm. lmstudio. ollama. openai. python. TypeScript. искусственный интеллект.. cohere. JavaScript. llm. lmstudio. ollama. openai. python. TypeScript. искусственный интеллект. Машинное обучение.

Исходный код, разобранный в данной статье, опубликован в этом репозитории

Длительный промежуток времени я искал модель, специально заточенную под вызов инструментов для внешних интегираций. Критерием поиска являлось минамальное колличество галлюцинаций при использовании железа с потребительского рынка

https://huggingface.co/tripolskypetr/command_r_gguf

Если десятки миллиардов параметров языковой модели потребуют покупать специлизированную видеокарту стоимостью 5 тысяч долларов, которую ещё нужно привезти и вставить в подходящую системную плату, такой бизнес нельзя масштабировать

Была поставлена задача: максимально использовать существующее железо. Исторически сложилось так, что офис укомплектован системными блоками с 32ГБ оперативной памяти и видеокартами RTX 3060 с 12ГБ видеопамяти

Результат поиска

В библиотеке моделей ollama была найдена модель command-r. Изначально, инструменты в ней были сломаны, однако, так как в issues началась ругонь, была получена копипаста, чтобы их починить.

ollama run oybekdevuz/command-r

ollama run oybekdevuz/command-r

И модель запустилась, заняв 90% ресурсов описанного выше системного блока. Вызов инструментов заработал, без тормозов и галюнов, средствами видеокарты. Это самый лучший вариант, так как мы максимально используем наше минимальное железо

Вызов инструметов заработал
Вызов инструметов заработал

Протестировали вызов инструментов. Есть различия с OpenAI: так как модель изначально позицинирует себя как оптимизированная под вызов внешних API, любое действие пользователя приходится прописывать как отдельный инструмент. В этом есть плюсы: поведение чата предсказуемо, если модель пишет, что товар добавлен в корзину, значит вместо текста-заглушки именно был отправлен HTTP запрос на сервер.

Что именно мы пропустили?

У cohere, производителя LLM, помимо облака, файлы модели в опенсорсе. Это тоже самое, что получить GGUF от GPT-4o и запустить локально. В итоге, получилось так, что на само облако мы не обратили внимание

https://docs.cohere.com/docs/rate-limits

У cohere есть free tier на 20 запросов в минуту на api key. Ограничение на количество времени, сколько живет trial токен я не нашел

https://dashboard.cohere.com/api-keys

Цена радикально более демократичная, чем в OpenAi. Однако, это не то, про что я хотел написать статью: А что если сделать карусель триальных токенов?

https://cohere.com/pricing

Весёлая карусель

Наш движок роя агентов, для подключения облачных 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 моя веселая карусель не будет сильно грустной и накладной по финансам(

Автор: tripolskypetr

Источник

Рейтинг@Mail.ru
Rambler's Top100