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