Files
effekt-interface/config/ai_config.py
qiaoxinjiu 420b9e37fa feat: 新增文档源和技能管理相关功能
1. 新增文档源管理模块(documentSource)
   - 控制器:documentSourceController.py
   - DAO层:documentSourceDao.py
   - 模型:documentSourceModel.py
   - 服务层:documentSourceService.py

2. 新增技能管理模块(skill)
   - 控制器:skillController.py
   - DAO层:skillDao.py
   - 模型:skillModel.py
   - 服务层:skillService.py

3. 新增AI服务(aiService.py)

4. 新增配置文件
   - AI配置:config/ai_config.py
   - 技能配置:config/skills/test-case-generator/

5. 新增SQL脚本
   - 文档权限:add_document_permissions.sql
   - 模块状态字段:add_module_status_field.sql
   - 文档源表:create_document_source_table.sql
   - 技能规则:skills_rules_pgsql.sql
2026-05-18 10:23:07 +08:00

75 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# encoding: UTF-8
"""
AI大模型配置文件
支持多种模型提供商OpenAI、自定义API等
"""
import os
from pathlib import Path
from dotenv import load_dotenv
# 加载项目根目录.env避免进程工作目录不同导致读取到其他配置
ENV_PATH = Path(__file__).resolve().parents[1] / '.env'
load_dotenv(ENV_PATH, override=True)
class AIConfig:
"""AI配置类"""
# OpenAI配置
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY', '')
OPENAI_API_BASE = os.getenv('OPENAI_API_BASE', 'https://api.openai.com/v1')
OPENAI_MODEL = os.getenv('OPENAI_MODEL', 'gpt-4o')
OPENAI_MAX_TOKENS = int(os.getenv('OPENAI_MAX_TOKENS', '4096'))
OPENAI_TEMPERATURE = float(os.getenv('OPENAI_TEMPERATURE', '0.7'))
# Routin/Meteor API配置兼容OpenAI格式的API
METEOR_API_KEY = os.getenv('METEOR_API_KEY', '')
ROUTIN_API_KEY = os.getenv('ROUTIN_API_KEY', '')
CUSTOM_API_KEY = os.getenv('CUSTOM_API_KEY', '')
CUSTOM_API_BASE = os.getenv('CUSTOM_API_BASE', 'https://api.routin.ai/v1')
CUSTOM_MODEL = os.getenv('CUSTOM_MODEL', 'gpt-4o')
# 模型提供商openai, custom
MODEL_PROVIDER = os.getenv('MODEL_PROVIDER', 'openai')
# 超时配置(秒)
CONNECT_TIMEOUT = int(os.getenv('AI_CONNECT_TIMEOUT', '60'))
READ_TIMEOUT = int(os.getenv('AI_READ_TIMEOUT', '120'))
# 重试配置
MAX_RETRIES = int(os.getenv('AI_MAX_RETRIES', '3'))
RETRY_DELAY = float(os.getenv('AI_RETRY_DELAY', '2.0'))
@staticmethod
def get_api_key():
"""获取API密钥"""
if AIConfig.MODEL_PROVIDER == 'openai':
return AIConfig.OPENAI_API_KEY
return AIConfig.METEOR_API_KEY or AIConfig.ROUTIN_API_KEY or AIConfig.CUSTOM_API_KEY
@staticmethod
def get_api_key_source():
"""获取当前API密钥来源用于排查配置加载问题"""
if AIConfig.MODEL_PROVIDER == 'openai':
return 'OPENAI_API_KEY'
if AIConfig.METEOR_API_KEY:
return 'METEOR_API_KEY'
if AIConfig.ROUTIN_API_KEY:
return 'ROUTIN_API_KEY'
if AIConfig.CUSTOM_API_KEY:
return 'CUSTOM_API_KEY'
return 'EMPTY'
@staticmethod
def get_api_base():
"""获取API基础URL"""
if AIConfig.MODEL_PROVIDER == 'openai':
return AIConfig.OPENAI_API_BASE
return AIConfig.CUSTOM_API_BASE
@staticmethod
def get_model():
"""获取模型名称"""
if AIConfig.MODEL_PROVIDER == 'openai':
return AIConfig.OPENAI_MODEL
return AIConfig.CUSTOM_MODEL