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