From c6c9623f36835ab9c8dd3be9e0607e70475ee99c Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 9 Jan 2026 20:34:13 -0800 Subject: [PATCH] feat(conversation): add proxy support for Anthropic API - Add https-proxy-agent dependency - Configure httpAgent in ClaudeAgentService when ANTHROPIC_PROXY_URL is set - Add ANTHROPIC_PROXY_URL environment variable to docker-compose.yml Co-Authored-By: Claude Opus 4.5 --- docker-compose.yml | 2 ++ .../services/conversation-service/package.json | 3 ++- .../infrastructure/claude/claude-agent.service.ts | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1073ef7..61ecd9f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -232,6 +232,7 @@ services: REDIS_URL: redis://:${REDIS_PASSWORD:-redis123}@redis:6379 ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} ANTHROPIC_BASE_URL: ${ANTHROPIC_BASE_URL:-https://api.anthropic.com} + ANTHROPIC_PROXY_URL: ${ANTHROPIC_PROXY_URL:-} KNOWLEDGE_SERVICE_URL: http://knowledge-service:3003 CORS_ORIGINS: https://iconsulting.szaiai.com,http://localhost:5173 ports: @@ -262,6 +263,7 @@ services: REDIS_URL: redis://:${REDIS_PASSWORD:-redis123}@redis:6379 ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} ANTHROPIC_BASE_URL: ${ANTHROPIC_BASE_URL:-https://api.anthropic.com} + ANTHROPIC_PROXY_URL: ${ANTHROPIC_PROXY_URL:-} ports: - "3005:3005" networks: diff --git a/packages/services/conversation-service/package.json b/packages/services/conversation-service/package.json index ff071da..429cfe0 100644 --- a/packages/services/conversation-service/package.json +++ b/packages/services/conversation-service/package.json @@ -31,7 +31,8 @@ "rxjs": "^7.8.0", "socket.io": "^4.8.3", "typeorm": "^0.3.19", - "uuid": "^9.0.0" + "uuid": "^9.0.0", + "https-proxy-agent": "^7.0.6" }, "devDependencies": { "@nestjs/cli": "^10.0.0", diff --git a/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts b/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts index 1104907..c98179c 100644 --- a/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts +++ b/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts @@ -1,6 +1,7 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import Anthropic from '@anthropic-ai/sdk'; +import { HttpsProxyAgent } from 'https-proxy-agent'; import { ImmigrationToolsService } from './tools/immigration-tools.service'; import { buildSystemPrompt, SystemPromptConfig } from './prompts/system-prompt'; @@ -33,9 +34,19 @@ export class ClaudeAgentService implements OnModuleInit { ) {} onModuleInit() { - this.client = new Anthropic({ + const proxyUrl = this.configService.get('ANTHROPIC_PROXY_URL'); + const clientOptions: Anthropic.ClientOptions = { apiKey: this.configService.get('ANTHROPIC_API_KEY'), - }); + }; + + // Configure proxy if specified + if (proxyUrl) { + console.log(`Using proxy for Anthropic API: ${proxyUrl}`); + const agent = new HttpsProxyAgent(proxyUrl); + clientOptions.httpAgent = agent; + } + + this.client = new Anthropic(clientOptions); // Initialize with default config this.systemPromptConfig = {