joel bot
This commit is contained in:
41
src/services/ai/index.ts
Normal file
41
src/services/ai/index.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* AI Service - Main entry point for AI functionality
|
||||
*/
|
||||
|
||||
import { createLogger } from "../../core/logger";
|
||||
import { ReplicateProvider } from "./replicate";
|
||||
import type { AiProvider, AiResponse } from "./types";
|
||||
|
||||
const logger = createLogger("AI:Service");
|
||||
|
||||
export class AiService {
|
||||
private provider: AiProvider;
|
||||
|
||||
constructor(provider?: AiProvider) {
|
||||
this.provider = provider ?? new ReplicateProvider();
|
||||
}
|
||||
|
||||
async health(): Promise<boolean> {
|
||||
return this.provider.health();
|
||||
}
|
||||
|
||||
async generateResponse(
|
||||
prompt: string,
|
||||
systemPrompt: string
|
||||
): Promise<AiResponse> {
|
||||
logger.debug("Generating response", { promptLength: prompt.length });
|
||||
return this.provider.ask({ prompt, systemPrompt });
|
||||
}
|
||||
}
|
||||
|
||||
// Singleton instance
|
||||
let aiService: AiService | null = null;
|
||||
|
||||
export function getAiService(): AiService {
|
||||
if (!aiService) {
|
||||
aiService = new AiService();
|
||||
}
|
||||
return aiService;
|
||||
}
|
||||
|
||||
export type { AiProvider, AiResponse } from "./types";
|
||||
Reference in New Issue
Block a user