@yk1028-test/ai-chat-supporter
Version:
AI Chat Supporter - TypeScript library for intelligent chat processing with LangChain integration
78 lines • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OllamaProvider = void 0;
const base_1 = require("./base");
const LangChainOllamaProvider_1 = require("./LangChainOllamaProvider");
class OllamaProvider extends base_1.BaseLLMProvider {
constructor(config) {
super(config);
this.name = 'ollama';
this.langChainProvider = null;
}
async initializeProvider() {
try {
this.langChainProvider = new LangChainOllamaProvider_1.LangChainOllamaProvider({
baseUrl: this.config.baseUrl || 'http://localhost:11434',
model: this.config.model || 'gemma3:1b',
temperature: this.config.temperature || 0.7,
...(this.config.maxTokens && { maxTokens: this.config.maxTokens }),
});
console.log(`Ollama 제공자 초기화 완료 - 모델: ${this.config.model || 'gemma3:1b'}`);
}
catch (error) {
throw new Error(`Ollama 초기화 실패: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async generateResponse(prompt) {
if (!this.langChainProvider) {
throw new Error('Ollama 제공자가 초기화되지 않았습니다');
}
try {
const response = await this.langChainProvider.invoke(prompt);
return response;
}
catch (error) {
throw new Error(`Ollama 응답 생성 실패: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
async isHealthy() {
if (!this.langChainProvider) {
return false;
}
try {
return await this.langChainProvider.isHealthy();
}
catch (error) {
console.warn(`Ollama 건강 상태 확인 실패: ${error instanceof Error ? error.message : 'Unknown error'}`);
return false;
}
}
// Ollama 특화 메서드들
async getAvailableModels() {
if (!this.langChainProvider) {
return [];
}
try {
return await this.langChainProvider.listModels();
}
catch (error) {
console.warn(`모델 목록 조회 실패: ${error instanceof Error ? error.message : 'Unknown error'}`);
return [];
}
}
setModel(model) {
this.config.model = model;
if (this.langChainProvider) {
this.langChainProvider.setModel(model);
}
}
getModel() {
return this.config.model || 'gemma3:1b';
}
// LangChain 제공자 직접 접근
getLangChainProvider() {
return this.langChainProvider;
}
}
exports.OllamaProvider = OllamaProvider;
//# sourceMappingURL=ollama.js.map