UNPKG

@nullplatform/llm-gateway

Version:
68 lines 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OllamaApiAdapter = void 0; const openai_js_1 = require("./openai.js"); class OllamaApiAdapter extends openai_js_1.OpenAIApiAdapter { // @ts-expect-error: Override base type, Ollama adapter uses its own name name = 'ollama'; async transformInput(request) { // Use OpenAI's transformInput but add Ollama-specific metadata const llmRequest = await super.transformInput(request); // Override provider in metadata if (llmRequest.metadata) { llmRequest.metadata.original_provider = 'ollama'; } return llmRequest; } async validate(request) { // Use OpenAI validation but remove max_tokens requirement (optional in Ollama) const openaiValidation = await super.validate(request); if (openaiValidation) { return openaiValidation; } // Ollama-specific validations if needed // Temperature range is different in Ollama (can be > 2) if (request.temperature !== undefined) { if (typeof request.temperature !== 'number' || request.temperature < 0) { return 'Temperature must be a non-negative number'; } } return null; } async transformOutputChunk(processedInput, input, chunk, firstChunk, finalChunk, accumulated) { // Use OpenAI's chunk transformation as Ollama streaming is compatible return await super.transformOutputChunk(processedInput, input, chunk, firstChunk, finalChunk, accumulated); } async transformOutput(processedInput, input, response) { // Use OpenAI's output transformation as the format is identical return await super.transformOutput(processedInput, input, response); } async getNativeAdapters() { // Combine OpenAI adapters with Ollama-specific ones const ollamaAdapters = [ { path: "/api/tags", method: 'get', doRequest: async (request, response) => { response.json({ "models": [ // TODO: enable via config or url ] }); } }, { path: "/api/show", method: 'post', doRequest: async (request, response) => { response.json({ // TODO: enable via config or url }); } } ]; return [...ollamaAdapters]; } } exports.OllamaApiAdapter = OllamaApiAdapter; //# sourceMappingURL=ollama.js.map