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) => {
    const headers = await fetchWithAuthHeader(params.serverAddress);
    return { Authorization: headers['Authorization'] };
  },
} as OllamaPluginParams;

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

// Function to lazily load GoogleAuth client
let auth: GoogleAuth;
function getAuthClient() {
  if (!auth) {
    auth = new GoogleAuth();
  }
  return auth;
}

// Function to fetch headers, reusing tokens when possible
async function fetchWithAuthHeader(url: string) {
  const client = await getIdTokenClient(url);
  const headers = await client.getRequestHeaders(url); // Auto-manages token refresh
  return headers;
}

async function getIdTokenClient(url: string) {
  const auth = getAuthClient();
  const client = await auth.getIdTokenClient(url);
  return client;
}

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.',
});