diff --git a/.env.example b/.env.example index d65654b..e7672f9 100644 --- a/.env.example +++ b/.env.example @@ -35,6 +35,8 @@ ANTHROPIC_BASE_URL=https://api.anthropic.com # OpenAI API (用于 Embedding) # =========================================== OPENAI_API_KEY=sk-xxx +# 如果在中国大陆部署,需要配置代理地址 +# OPENAI_BASE_URL=https://your-openai-proxy.com/v1 # =========================================== # PostgreSQL Database diff --git a/packages/services/knowledge-service/src/infrastructure/embedding/embedding.service.ts b/packages/services/knowledge-service/src/infrastructure/embedding/embedding.service.ts index 3a1f5a1..d03cb6c 100644 --- a/packages/services/knowledge-service/src/infrastructure/embedding/embedding.service.ts +++ b/packages/services/knowledge-service/src/infrastructure/embedding/embedding.service.ts @@ -22,12 +22,25 @@ export class EmbeddingService implements OnModuleInit { return; } + const baseURL = this.configService.get('OPENAI_BASE_URL'); + const isProxyUrl = baseURL && (baseURL.match(/^\d+\.\d+\.\d+\.\d+/) || baseURL.match(/^https?:\/\/\d+\.\d+\.\d+\.\d+/)); + + // If using IP-based proxy, disable TLS certificate verification + if (isProxyUrl) { + console.log(`[EmbeddingService] Using OpenAI proxy (TLS verification disabled): ${baseURL}`); + process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + } + this.openai = new OpenAI({ apiKey, - baseURL: this.configService.get('OPENAI_BASE_URL'), // 支持自定义endpoint + baseURL: baseURL || undefined, }); - console.log('[EmbeddingService] Initialized with OpenAI embedding model'); + if (baseURL && !isProxyUrl) { + console.log(`[EmbeddingService] Using OpenAI API base URL: ${baseURL}`); + } else if (!baseURL) { + console.log('[EmbeddingService] Initialized with OpenAI embedding model'); + } } /**