@nullplatform/llm-gateway
Version:
LLM Gateway Core - Main proxy server
68 lines • 2.71 kB
JavaScript
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
;