Trình bổ trợ Ollama

Trình bổ trợ Ollama cung cấp giao diện cho mọi LLM cục bộ mà Ollama hỗ trợ.

Cài đặt

npm i --save genkitx-ollama

Cấu hình

Trình bổ trợ này yêu cầu bạn cài đặt và chạy máy chủ ollama trước. Bạn có thể làm theo hướng dẫn trên: https://ollama.com/download

Bạn có thể sử dụng Ollama CLI để tải mô hình mà bạn quan tâm xuống. Ví dụ:

ollama pull gemma

Để sử dụng trình bổ trợ này, hãy chỉ định trình bổ trợ khi bạn gọi 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
    }),
  ],
});

Xác thực

Nếu muốn truy cập vào các hoạt động triển khai từ xa của ollama yêu cầu tiêu đề tuỳ chỉnh (tĩnh, chẳng hạn như khoá API hoặc động, chẳng hạn như tiêu đề xác thực), bạn có thể chỉ định các tiêu đề đó trong trình bổ trợ cấu hình ollama:

Tiêu đề tĩnh:

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

Bạn cũng có thể tự động đặt tiêu đề cho mỗi yêu cầu. Dưới đây là ví dụ về cách đặt mã thông báo giá trị nhận dạng bằng cách sử dụng thư viện Xác thực của Google:

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;
}

Hoạt động sử dụng

Trình bổ trợ này không xuất tĩnh các tệp tham chiếu mô hình. Chỉ định một trong các mô hình mà bạn đã định cấu hình bằng giá trị nhận dạng chuỗi:

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