cygon
intial commit
86042ad
import { api } from "encore.dev/api";
import { secret } from "encore.dev/config";
import log from "encore.dev/log";
import { LLMProviderService } from "../lib/llm-provider";
import type { ModelInfo, LLMProvider } from "../lib/types";
const llmProvider = secret("LLMProvider");
const ollamaBaseURL = secret("OllamaBaseURL");
const huggingFaceAPIKey = secret("HuggingFaceAPIKey");
const defaultModel = secret("DefaultModel");
function getProvider(): LLMProviderService {
return new LLMProviderService({
provider: llmProvider() as LLMProvider,
ollamaBaseURL: ollamaBaseURL(),
huggingFaceAPIKey: huggingFaceAPIKey(),
defaultModel: defaultModel(),
});
}
export interface ModelsResponse {
provider: string;
models: ModelInfo[];
}
// Lists all available LLM models.
export const listModels = api<void, ModelsResponse>(
{ expose: true, method: "GET", path: "/models" },
async () => {
log.info("Models list requested");
const provider = getProvider();
const models = await provider.listModels();
log.info("Models listed", { count: models.length });
return {
provider: provider.getProvider(),
models,
};
}
);