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:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user