更新
This commit is contained in:
@@ -106,6 +106,7 @@ class CodeExecutor:
|
||||
"Equipment": getattr(importlib.import_module("src.project"), "Equipment", None),
|
||||
"MaterialOrEquipment": getattr(importlib.import_module("src.project"), "MaterialOrEquipment", None),
|
||||
"ProjectBuilder": ProjectBuilder,
|
||||
"logger": logger,
|
||||
}
|
||||
|
||||
old_stdout = sys.stdout
|
||||
|
||||
+12
-6
@@ -28,17 +28,23 @@ class LLMClient:
|
||||
|
||||
api_type = openai_config.get("api_type", "openai")
|
||||
os.environ["OPENAI_API_TYPE"] = api_type
|
||||
temperature = openai_config.get("temperature", 0)
|
||||
|
||||
model_name = openai_config.get("model_name", "gpt-4o-mini")
|
||||
|
||||
# 初始化限速器:每秒最多0.1次请求(即每10秒1次)
|
||||
rate_limiter = InMemoryRateLimiter(
|
||||
requests_per_second=13,
|
||||
check_every_n_seconds=10,
|
||||
max_bucket_size=10,
|
||||
)
|
||||
#rate_limiter = InMemoryRateLimiter(
|
||||
# requests_per_second=13,
|
||||
# check_every_n_seconds=10,
|
||||
# max_bucket_size=10,
|
||||
#)
|
||||
# 开启流式
|
||||
self.llm = ChatOpenAI(model_name=model_name, temperature=0, streaming=True, rate_limiter=rate_limiter)
|
||||
self.llm = ChatOpenAI(
|
||||
model_name=model_name,
|
||||
temperature=temperature,
|
||||
streaming=True,
|
||||
#rate_limiter=rate_limiter
|
||||
)
|
||||
|
||||
def invoke(self, messages):
|
||||
# 同步调用,返回完整响应
|
||||
|
||||
@@ -25,6 +25,7 @@ class MultiAPIKeyChatOpenAI:
|
||||
api_base = openai_config.get("api_base")
|
||||
api_type = openai_config.get("api_type", "openai")
|
||||
model_name = openai_config.get("model_name", "gpt-4o-mini")
|
||||
temperature = openai_config.get("temperature", 0)
|
||||
|
||||
# 设置环境变量(可选,根据需要)
|
||||
if api_base:
|
||||
@@ -32,20 +33,20 @@ class MultiAPIKeyChatOpenAI:
|
||||
os.environ["OPENAI_API_TYPE"] = api_type
|
||||
|
||||
# 初始化限速器
|
||||
rate_limiter = InMemoryRateLimiter(
|
||||
requests_per_second=13,
|
||||
check_every_n_seconds=10,
|
||||
max_bucket_size=10,
|
||||
)
|
||||
#rate_limiter = InMemoryRateLimiter(
|
||||
# requests_per_second=13,
|
||||
# check_every_n_seconds=10,
|
||||
# max_bucket_size=10,
|
||||
#)
|
||||
|
||||
# 创建多个 ChatOpenAI 实例,每个使用不同的 API Key
|
||||
self.llms = [
|
||||
ChatOpenAI(
|
||||
api_key=key,
|
||||
model_name=model_name,
|
||||
temperature=0,
|
||||
temperature=temperature,
|
||||
streaming=True,
|
||||
rate_limiter=rate_limiter,
|
||||
#rate_limiter=rate_limiter,
|
||||
)
|
||||
for key in api_keys
|
||||
]
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ class ProjectToolkit(ABC):
|
||||
- code (int): 状态码,固定为 200(成功)或 201(失败)
|
||||
- message (str): 成功时为 "Ok",失败时包含错误信息和辅助信息
|
||||
- status (bool): 成功为 True,失败为 False
|
||||
- data (ProjectDivisionItem | None]): 成功时返回的ProjectDivisionItem,失败时为None
|
||||
- data (List[Dict[str, Any]]): 成功时返回的数据列表,失败时为空列表
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
@@ -245,6 +245,7 @@ def project_get_calculate_function():
|
||||
message = result_dict.get('message', '')
|
||||
code = result_dict.get('data', '')
|
||||
data = result_dict.get('data', [])
|
||||
logger.info(f"status {{status}} message: {{message}}")
|
||||
if status:
|
||||
return result_dict
|
||||
else:
|
||||
@@ -254,7 +255,7 @@ def project_get_calculate_function():
|
||||
- 参数必须从用户问题或上下文信息中提取
|
||||
- 输出代码中必须以def project_get_calculate_function() -> dict函数作为入口函数
|
||||
- 必须确保生成的代码可以直接执行,代码要注意进行各类错误检查,出错采用抛出异常方式,说明详细信息
|
||||
- 禁止添加任何注释或解释
|
||||
- 为函数内部代码生成流程注释,并使用logger进行日志输出
|
||||
- ProjectToolkit 类中涉及项目划分的函数已考虑在其及其子孙项目划分下查找,所以无需生成递归子项目划分的代码
|
||||
- 如果文本中包含范围编码格式则需要进行编码展开,如'YX2-1~7'展开为‘YX2-1/YX2-2/YX2-3/YX2-4/YX2-5/YX2-6/YX2-7’
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user