增加代码知识库;修复文档处理内容;增加API设置

This commit is contained in:
2026-05-16 20:20:10 +08:00
parent 69b49d28b2
commit 7aa3ce3294
119 changed files with 182273 additions and 793 deletions

View File

@@ -11,42 +11,51 @@ class LLMFactory:
provider: Optional[str] = None,
temperature: float = 0,
streaming: bool = True,
model_profile: Optional[object] = None,
) -> BaseChatModel:
"""
Create a LLM instance based on the provider
"""
# If no provider specified, use the one from settings
provider = provider or settings.CHAT_PROVIDER
if model_profile is not None:
provider = (provider or getattr(model_profile, "provider", None) or "dashscope").lower()
model = getattr(model_profile, "chat_model", None) or _default_chat_model(provider)
api_key = getattr(model_profile, "api_key", "") or ""
api_base = getattr(model_profile, "api_base", None) or _default_api_base(provider)
else:
provider = provider or settings.CHAT_PROVIDER
model = _default_chat_model(provider)
api_key = _default_api_key(provider)
api_base = _default_api_base(provider)
if provider.lower() == "openai":
return ChatOpenAI(
temperature=temperature,
streaming=streaming,
model=settings.OPENAI_MODEL,
openai_api_key=settings.OPENAI_API_KEY,
openai_api_base=settings.OPENAI_API_BASE
model=model,
openai_api_key=api_key,
openai_api_base=api_base
)
elif provider.lower() == "deepseek":
return ChatDeepSeek(
temperature=temperature,
streaming=streaming,
model=settings.DEEPSEEK_MODEL,
api_key=settings.DEEPSEEK_API_KEY,
api_base=settings.DEEPSEEK_API_BASE
model=model,
api_key=api_key,
api_base=api_base
)
elif provider.lower() == "dashscope":
elif provider.lower() in {"dashscope", "openai_compatible"}:
return ChatOpenAI(
temperature=temperature,
streaming=streaming,
model=settings.DASH_SCOPE_CHAT_MODEL,
openai_api_key=settings.DASH_SCOPE_API_KEY,
openai_api_base=settings.DASH_SCOPE_API_BASE,
model=model,
openai_api_key=api_key,
openai_api_base=api_base,
)
elif provider.lower() == "ollama":
# Initialize Ollama model
return OllamaLLM(
model=settings.OLLAMA_MODEL,
base_url=settings.OLLAMA_API_BASE,
model=model,
base_url=api_base,
temperature=temperature,
streaming=streaming
)
@@ -54,4 +63,41 @@ class LLMFactory:
# elif provider.lower() == "anthropic":
# return ChatAnthropic(...)
else:
raise ValueError(f"Unsupported LLM provider: {provider}")
raise ValueError(f"Unsupported LLM provider: {provider}")
def _default_chat_model(provider: Optional[str]) -> str:
provider = (provider or settings.CHAT_PROVIDER).lower()
if provider == "openai":
return settings.OPENAI_MODEL
if provider == "deepseek":
return settings.DEEPSEEK_MODEL
if provider == "dashscope":
return settings.DASH_SCOPE_CHAT_MODEL
if provider == "ollama":
return settings.OLLAMA_MODEL
return settings.DASH_SCOPE_CHAT_MODEL or settings.OPENAI_MODEL
def _default_api_key(provider: Optional[str]) -> str:
provider = (provider or settings.CHAT_PROVIDER).lower()
if provider == "openai":
return settings.OPENAI_API_KEY
if provider == "deepseek":
return settings.DEEPSEEK_API_KEY
if provider == "dashscope":
return settings.DASH_SCOPE_API_KEY
return settings.API_KEY
def _default_api_base(provider: Optional[str]) -> str:
provider = (provider or settings.CHAT_PROVIDER).lower()
if provider == "openai":
return settings.OPENAI_API_BASE
if provider == "deepseek":
return settings.DEEPSEEK_API_BASE
if provider == "dashscope":
return settings.DASH_SCOPE_API_BASE
if provider == "ollama":
return settings.OLLAMA_API_BASE
return settings.DASH_SCOPE_API_BASE