Le plug-in Ollama fournit des interfaces à tous les LLM locaux compatibles avec Ollama.
Installation
npm i --save genkitx-ollama
Configuration
Pour utiliser ce plug-in, vous devez d'abord installer et exécuter le serveur Ollama. Vous pouvez suivre les instructions sur la page Télécharger Ollama.
Vous pouvez utiliser la CLI Ollama pour télécharger le modèle qui vous intéresse. Exemple :
ollama pull gemma
Pour utiliser ce plug-in, spécifiez-le lorsque vous initialisez Genkit:
import { genkit } from 'genkit';
import { ollama } from 'genkitx-ollama';
const ai = genkit({
plugins: [
ollama({
models: [
{
name: 'gemma',
type: 'generate', // type: 'chat' | 'generate' | undefined
},
],
serverAddress: 'http://127.0.0.1:11434', // default local address
}),
],
});
Authentification
Si vous souhaitez accéder à des déploiements distants d'Ollama qui nécessitent des en-têtes personnalisés (statiques, tels que des clés API, ou dynamiques, tels que des en-têtes d'authentification), vous pouvez les spécifier dans le plug-in de configuration d'Ollama:
En-têtes statiques:
ollama({
models: [{ name: 'gemma'}],
requestHeaders: {
'api-key': 'API Key goes here'
},
serverAddress: 'https://my-deployment',
}),
Vous pouvez également définir dynamiquement des en-têtes par requête. Voici un exemple d'utilisation de la bibliothèque Google Auth pour définir un jeton d'ID:
import { GoogleAuth } from 'google-auth-library';
import { ollama } from 'genkitx-ollama';
import { genkit } from 'genkit';
const ollamaCommon = { models: [{ name: 'gemma:2b' }] };
const ollamaDev = {
...ollamaCommon,
serverAddress: 'http://127.0.0.1:11434',
};
const ollamaProd = {
...ollamaCommon,
serverAddress: 'https://my-deployment',
requestHeaders: async (params) => {
const headers = await fetchWithAuthHeader(params.serverAddress);
return { Authorization: headers['Authorization'] };
},
};
const ai = genkit({
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;
}
Utilisation
Ce plug-in n'exporte pas de manière statique les références de modèle. Spécifiez l'un des modèles que vous avez configurés à l'aide d'un identifiant de chaîne:
const llmResponse = await ai.generate({
model: 'ollama/gemma',
prompt: 'Tell me a joke.',
});
Intégrateurs
Le plug-in Ollama est compatible avec les représentations vectorielles continues, qui peuvent être utilisées pour les recherches de similarité et d'autres tâches de traitement du langage naturel.
const ai = genkit({
plugins: [
ollama({
serverAddress: 'http://localhost:11434',
embedders: [{ name: 'nomic-embed-text', dimensions: 768 }],
}),
],
});
async function getEmbeddings() {
const embeddings = (await ai.embed({
embedder: 'ollama/nomic-embed-text',
content: 'Some text to embed!',
})
)[0].embedding;
return embeddings;
}
getEmbeddings().then((e) => console.log(e))