Wtyczka Ollama

Wtyczka Ollama udostępnia interfejsy dowolnego lokalnego LLM obsługiwanego przez Ollama.

Instalacja

npm i --save genkitx-ollama

Konfiguracja

Ta wtyczka wymaga najpierw zainstalowania i uruchomienia serwera ollama. Możesz postępować zgodnie z tymi instrukcjami: https://ollama.com/download

Aby pobrać interesujący Cię model, możesz użyć interfejsu wiersza poleceń Ollama. Przykład:

ollama pull gemma

Aby użyć tej wtyczki, podaj ją podczas wywoływania funkcji 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ń oprogramowania Ollama, które wymagają niestandardowych nagłówków (statycznych, takich jak klucze interfejsu API lub dynamicznych, takich jak nagłówki uwierzytelniania), możesz określić je 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 konfigurowania tokena identyfikatora za pomocą 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 odniesień do modeli. Określ jeden ze skonfigurowanych modeli przy użyciu identyfikatora ciągu znaków:

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