Trình bổ trợ Ollama cung cấp giao diện cho mọi LLM cục bộ mà Ollama hỗ trợ.
Lắp đặt
npm i --save genkitx-ollama
Cấu hình
Trước tiên, trình bổ trợ này yêu cầu bạn cài đặt và chạy máy chủ Ollama. Bạn có thể làm theo hướng dẫn trên: https://ollama.com/download
Bạn có thể sử dụng CLI Ollama để 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 khởi chạy 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
}),
],
});
Xác thực
Nếu muốn truy cập vào các bản 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 nhận dạng bằng thư viện 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;
}
Cách sử dụng
Trình bổ trợ này không xuất tham chiếu mô hình một cách tĩnh. Chỉ định một trong các mô hình mà bạn đã định cấu hình bằng cách sử dụng giá trị nhận dạng chuỗi:
const llmResponse = await ai.generate({
model: 'ollama/gemma',
prompt: 'Tell me a joke.',
});
Trình nhúng
Trình bổ trợ Ollama hỗ trợ các phần nhúng, có thể dùng cho các nội dung tìm kiếm tương đồng và các tác vụ NLP khác.
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))