feat(agent-core): 补齐提示词编排与结构化解析
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from dataclasses import dataclass
|
||||
import json
|
||||
import os
|
||||
from urllib.error import URLError
|
||||
from urllib.request import Request, urlopen
|
||||
|
||||
@@ -25,13 +26,22 @@ class MockLLMProvider:
|
||||
self.model_name = model_name or "mock-model"
|
||||
|
||||
def generate(self, messages: list[dict], response_format: dict | None = None) -> LLMResponse:
|
||||
# Mock Provider 的职责是让页面和测试在未接入真实模型时也能闭环。
|
||||
# 因此这里直接返回稳定 JSON,方便后续统一走结构化解析逻辑。
|
||||
user_content = ""
|
||||
for message in reversed(messages):
|
||||
if message.get("role") == "user":
|
||||
user_content = message.get("content", "")
|
||||
break
|
||||
return LLMResponse(
|
||||
content=f"模拟模型回答:{user_content}",
|
||||
content=json.dumps(
|
||||
{
|
||||
"answer": f"模拟回答:{user_content}",
|
||||
"confidence": "medium",
|
||||
"references": [],
|
||||
},
|
||||
ensure_ascii=False,
|
||||
),
|
||||
model_name=self.model_name,
|
||||
success=True,
|
||||
)
|
||||
@@ -112,7 +122,9 @@ def _post_json(base_url: str, endpoint: str, api_key: str, payload: dict) -> dic
|
||||
|
||||
def create_llm_provider(config: dict | None = None):
|
||||
config = config or {}
|
||||
provider_name = config.get("LLM_PROVIDER", "mock")
|
||||
provider_name = config.get("LLM_PROVIDER")
|
||||
if not provider_name:
|
||||
provider_name = "openai_compatible" if config.get("LLM_API_KEY") else "mock"
|
||||
model_name = config.get("LLM_MODEL", "mock-model")
|
||||
if provider_name == "mock":
|
||||
return MockLLMProvider(model_name=model_name)
|
||||
@@ -130,3 +142,21 @@ def create_embedding_provider(config: dict | None = None):
|
||||
base_url=config.get("EMBEDDING_BASE_URL", config.get("LLM_BASE_URL", "https://api.openai.com/v1")),
|
||||
model_name=config.get("EMBEDDING_MODEL", "text-embedding-3-small"),
|
||||
)
|
||||
|
||||
|
||||
def get_runtime_llm_config(overrides: dict | None = None) -> dict:
|
||||
"""
|
||||
从环境变量读取运行时配置。
|
||||
|
||||
Agent Core 通过这层读取模型配置,避免直接依赖 Django settings,
|
||||
这样本模块在独立脚本、测试和 Django 中都能复用。
|
||||
"""
|
||||
config = {
|
||||
"LLM_PROVIDER": os.environ.get("LLM_PROVIDER", ""),
|
||||
"LLM_API_KEY": os.environ.get("LLM_API_KEY", ""),
|
||||
"LLM_BASE_URL": os.environ.get("LLM_BASE_URL", "https://api.openai.com/v1"),
|
||||
"LLM_MODEL": os.environ.get("LLM_MODEL", "mock-model"),
|
||||
}
|
||||
if overrides:
|
||||
config.update(overrides)
|
||||
return config
|
||||
|
||||
Reference in New Issue
Block a user