پلاگین Olama برای هر یک از LLM های محلی پشتیبانی شده توسط Ollama رابط ها را فراهم می کند.
نصب و راه اندازی
npm i --save genkitx-ollama
پیکربندی
این افزونه نیاز دارد که ابتدا سرور اوللاما را نصب و اجرا کنید. میتوانید دستورالعملها را در: https://ollama.com/download دنبال کنید
شما می توانید از Ollama CLI برای دانلود مدل مورد نظر خود استفاده کنید. به عنوان مثال:
ollama pull gemma
برای استفاده از این افزونه، زمانی که 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
}),
],
});
احراز هویت
اگر مایلید به استقرارهای راه دور Ollama که به هدرهای سفارشی نیاز دارند (ایستا، مانند کلیدهای API، یا پویا، مانند هدرهای تأیید اعتبار)، دسترسی داشته باشید، میتوانید آنها را در افزونه پیکربندی Ollama مشخص کنید:
هدرهای ایستا:
ollama({
models: [{ name: 'gemma'}],
requestHeaders: {
'api-key': 'API Key goes here'
},
serverAddress: 'https://my-deployment',
}),
همچنین می توانید به صورت پویا سرصفحه ها را در هر درخواست تنظیم کنید. در اینجا مثالی از نحوه تنظیم یک نشانه شناسه با استفاده از کتابخانه Google Auth آورده شده است:
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;
}
استفاده
این افزونه به صورت ایستا مراجع مدل را صادر نمی کند. یکی از مدل هایی را که با استفاده از یک شناسه رشته پیکربندی کرده اید، مشخص کنید:
const llmResponse = await ai.generate({
model: 'ollama/gemma',
prompt: 'Tell me a joke.',
});
تعبیه کننده ها
پلاگین Ollama از جاسازی ها پشتیبانی می کند که می توانند برای جستجوهای مشابه و سایر وظایف NLP استفاده شوند.
const ai = genkit({
plugins: [
ollama({
serverAddress: 'http://localhost:11434',
embedders: [{ name: 'nomic-embed-text', dimensions: 768 }],
}),
],
});
async function getEmbedding() {
const embedding = await ai.embed({
embedder: 'ollama/nomic-embed-text',
content: 'Some text to embed!',
})
return embedding;
}
getEmbedding().then((e) => console.log(e))