Ollama प्लगिन

Ollama प्लग इन, Ollama के साथ काम करने वाले किसी भी स्थानीय एलएलएम के लिए इंटरफ़ेस उपलब्ध कराता है.

इंस्टॉल करना

npm i --save genkitx-ollama

कॉन्फ़िगरेशन

इस प्लगिन को इस्तेमाल करने के लिए, आपको पहले 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 के उन रिमोट डिप्लॉयमेंट को ऐक्सेस करना है जिनके लिए कस्टम हेडर (स्टैटिक, जैसे कि एपीआई पासकोड या डाइनैमिक, जैसे कि पुष्टि करने वाले हेडर) की ज़रूरत होती है, तो 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 प्लग इन, एम्बेड करने की सुविधा देता है. इसका इस्तेमाल, मिलती-जुलती खोजों और एनएलपी के अन्य टास्क के लिए किया जा सकता है.

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))