refactor(ai): replace OpenAI with DeepSeek API

- Update config.py with DEEPSEEK_API_KEY, DEEPSEEK_MODEL, DEEPSEEK_BASE_URL
- Update ai.py to use DeepSeek endpoint (OpenAI-compatible)
- Update docker-compose.yml environment variables
This commit is contained in:
Claude AI
2026-01-29 22:05:10 +00:00
parent db1258bc2a
commit a6c2e67c6a
3 changed files with 18 additions and 16 deletions

View File

@@ -6,9 +6,10 @@ class Settings(BaseSettings):
DATABASE_URL: str = "postgresql://whatsapp_admin:password@localhost:5432/whatsapp_central"
REDIS_URL: str = "redis://localhost:6379"
# OpenAI
OPENAI_API_KEY: str = ""
OPENAI_MODEL: str = "gpt-3.5-turbo"
# DeepSeek AI (OpenAI-compatible API)
DEEPSEEK_API_KEY: str = ""
DEEPSEEK_MODEL: str = "deepseek-chat"
DEEPSEEK_BASE_URL: str = "https://api.deepseek.com"
API_GATEWAY_URL: str = "http://localhost:8000"
WHATSAPP_CORE_URL: str = "http://localhost:3001"

View File

@@ -10,7 +10,7 @@ settings = get_settings()
class AIResponseExecutor(NodeExecutor):
"""Generate AI response using OpenAI"""
"""Generate AI response using DeepSeek API"""
async def execute(
self, config: dict, context: FlowContext, session: Any
@@ -21,8 +21,8 @@ class AIResponseExecutor(NodeExecutor):
max_tokens = config.get("max_tokens", 500)
temperature = config.get("temperature", 0.7)
if not settings.OPENAI_API_KEY:
context.set("_ai_error", "OpenAI API key not configured")
if not settings.DEEPSEEK_API_KEY:
context.set("_ai_error", "DeepSeek API key not configured")
return "error"
if not prompt:
@@ -43,13 +43,13 @@ class AIResponseExecutor(NodeExecutor):
async with httpx.AsyncClient() as client:
response = await client.post(
"https://api.openai.com/v1/chat/completions",
f"{settings.DEEPSEEK_BASE_URL}/v1/chat/completions",
headers={
"Authorization": f"Bearer {settings.OPENAI_API_KEY}",
"Authorization": f"Bearer {settings.DEEPSEEK_API_KEY}",
"Content-Type": "application/json",
},
json={
"model": settings.OPENAI_MODEL,
"model": settings.DEEPSEEK_MODEL,
"messages": messages,
"max_tokens": max_tokens,
"temperature": temperature,
@@ -68,7 +68,7 @@ class AIResponseExecutor(NodeExecutor):
class AISentimentExecutor(NodeExecutor):
"""Analyze sentiment of user message"""
"""Analyze sentiment of user message using DeepSeek"""
async def execute(
self, config: dict, context: FlowContext, session: Any
@@ -78,18 +78,18 @@ class AISentimentExecutor(NodeExecutor):
)
output_variable = config.get("output_variable", "_sentiment")
if not settings.OPENAI_API_KEY or not text:
if not settings.DEEPSEEK_API_KEY or not text:
return "neutral"
async with httpx.AsyncClient() as client:
response = await client.post(
"https://api.openai.com/v1/chat/completions",
f"{settings.DEEPSEEK_BASE_URL}/v1/chat/completions",
headers={
"Authorization": f"Bearer {settings.OPENAI_API_KEY}",
"Authorization": f"Bearer {settings.DEEPSEEK_API_KEY}",
"Content-Type": "application/json",
},
json={
"model": "gpt-3.5-turbo",
"model": settings.DEEPSEEK_MODEL,
"messages": [
{
"role": "system",