Wtyczka Ollama

Wtyczka Ollama zapewnia interfejsy do dowolnego z lokalnych LLM obsługiwanych przez Ollama

Instalacja

npm i --save genkitx-ollama

Konfiguracja

Ta wtyczka wymaga wcześniejszego zainstalowania i uruchomienia serwera ollama. Możesz obserwować Instrukcje znajdziesz na https://ollama.com/download

Aby pobrać model, który Cię interesuje, możesz użyć interfejsu wiersza poleceń Ollama. Przykład:

ollama pull gemma

Aby używać tej wtyczki, określ ją, gdy wywołujesz configureGenkit().

import { ollama } from 'genkitx-ollama';

export default configureGenkit({
  plugins: [
    ollama({
      models: [
        {
          name: 'gemma',
          type: 'generate', // type: 'chat' | 'generate' | undefined
        },
      ],
      serverAddress: 'http://127.0.0.1:11434', // default local address
    }),
  ],
});

Uwierzytelnianie

Jeśli chcesz uzyskać dostęp do zdalnych wdrożeń Ollamy, które wymagają niestandardowych nagłówków (statycznych, takich jak klucze interfejsu API lub dynamiczne, takie jak nagłówki uwierzytelniania), możesz je określić we wtyczce konfiguracji ollama:

Nagłówki statyczne:

ollama({
  models: [{ name: 'gemma'}],
  requestHeaders: {
    'api-key': 'API Key goes here'
  },
  serverAddress: 'https://my-deployment',
}),

Możesz też dynamicznie ustawiać nagłówki dla każdego żądania. Oto przykład konfiguracji tokena tożsamości za pomocą do biblioteki Google Auth:

import { GoogleAuth } from 'google-auth-library';
import { ollama, OllamaPluginParams } from 'genkitx-ollama';
import { configureGenkit, isDevEnv } from '@genkit-ai/core';

const ollamaCommon = {models: [{name: "gemma:2b"}]};
const ollamaDev = {
  ...ollamaCommon,
  serverAddress: 'http://127.0.0.1:11434',
} as OllamaPluginParams;
const ollamaProd = {
  ...ollamaCommon,
  serverAddress: 'https://my-deployment',
  requestHeaders: async (params) => ({
    Authorization: `Bearer ${await getIdToken(params.serverAddress)}`,
  }),
} as OllamaPluginParams;

export default configureGenkit({
  plugins: [
    ollama(isDevEnv() ? ollamaDev: ollamaProd),
  ],
});

export async function getIdToken(url: string): Promise<string> {
  const auth = getAuthClient();
  const client = await auth.getIdTokenClient(url);
  return client.idTokenProvider.fetchIdToken(url);
}

let auth: GoogleAuth;
function getAuthClient() {
  // Lazy load GoogleAuth client.
  if (!auth) {
    auth = new GoogleAuth();
  }
  return auth;
}

Wykorzystanie

Ta wtyczka nie eksportuje statycznie odwołań do modeli. Podaj jedną z wartości skonfigurowane przez Ciebie modele za pomocą identyfikatora ciągu:

const llmResponse = await generate({
  model: 'ollama/gemma',
  prompt: 'Tell me a joke.',
});