ওল্লামা প্লাগইন

ওল্লামা প্লাগইন ওল্লামা দ্বারা সমর্থিত যেকোনো স্থানীয় LLM-কে ইন্টারফেস প্রদান করে।

ইনস্টলেশন

npm i --save genkitx-ollama

কনফিগারেশন

এই প্লাগইনটির জন্য আপনাকে প্রথমে ওল্লামা সার্ভার ইনস্টল এবং রান করতে হবে। আপনি এখানে নির্দেশাবলী অনুসরণ করতে পারেন: https://ollama.com/download

আপনি যে মডেলটিতে আগ্রহী তা ডাউনলোড করতে আপনি ওল্লামা 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
    }),
  ],
});

প্রমাণীকরণ

আপনি যদি ওল্লামার দূরবর্তী স্থাপনাগুলি অ্যাক্সেস করতে চান যার জন্য কাস্টম হেডারের প্রয়োজন হয় (স্ট্যাটিক, যেমন API কী, বা গতিশীল, যেমন প্রমাণীকরণ শিরোনাম), আপনি ওল্লামা কনফিগারেশন প্লাগইনে সেগুলি নির্দিষ্ট করতে পারেন:

স্ট্যাটিক হেডার:

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

এমবেডার্স

ওল্লামা প্লাগইন এমবেডিং সমর্থন করে, যা সাদৃশ্য অনুসন্ধান এবং অন্যান্য এনএলপি কাজের জন্য ব্যবহার করা যেতে পারে।

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