first commit
This commit is contained in:
+27
-5
@@ -1,5 +1,5 @@
|
||||
"""
|
||||
بارگذاری تنظیمات RAG از rag_config.yaml
|
||||
بارگذاری تنظیمات RAG از rag_config.yaml — با پشتیبانی از چند provider و چند پایگاه دانش
|
||||
"""
|
||||
import os
|
||||
from dataclasses import dataclass, field
|
||||
@@ -16,6 +16,8 @@ class EmbeddingConfig:
|
||||
batch_size: int = 32
|
||||
api_key_env: str | None = None
|
||||
base_url: str | None = None
|
||||
avalai_base_url: str | None = None
|
||||
avalai_api_key_env: str | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -37,6 +39,15 @@ class LLMConfig:
|
||||
model: str = "gpt-4o"
|
||||
base_url: str | None = None
|
||||
api_key_env: str | None = None
|
||||
avalai_base_url: str | None = None
|
||||
avalai_api_key_env: str | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class KnowledgeBaseConfig:
|
||||
path: str
|
||||
tone_file: str
|
||||
description: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -45,8 +56,7 @@ class RAGConfig:
|
||||
qdrant: QdrantConfig
|
||||
chunking: ChunkingConfig
|
||||
llm: LLMConfig = field(default_factory=LLMConfig)
|
||||
tone_file: str = "config/tone.txt"
|
||||
knowledge_base_path: str = "config/knowledge_base"
|
||||
knowledge_bases: dict[str, KnowledgeBaseConfig] = field(default_factory=dict)
|
||||
chromadb: dict[str, Any] = field(default_factory=dict)
|
||||
|
||||
|
||||
@@ -73,6 +83,8 @@ def load_rag_config(config_path: str | Path | None = None) -> RAGConfig:
|
||||
batch_size=emb.get("batch_size", 32),
|
||||
api_key_env=emb.get("api_key_env"),
|
||||
base_url=emb.get("base_url"),
|
||||
avalai_base_url=emb.get("avalai_base_url"),
|
||||
avalai_api_key_env=emb.get("avalai_api_key_env"),
|
||||
)
|
||||
|
||||
qd = data.get("qdrant", {})
|
||||
@@ -94,14 +106,24 @@ def load_rag_config(config_path: str | Path | None = None) -> RAGConfig:
|
||||
model=llm_data.get("model", "gpt-4o"),
|
||||
base_url=llm_data.get("base_url"),
|
||||
api_key_env=llm_data.get("api_key_env"),
|
||||
avalai_base_url=llm_data.get("avalai_base_url"),
|
||||
avalai_api_key_env=llm_data.get("avalai_api_key_env"),
|
||||
)
|
||||
|
||||
kb_data = data.get("knowledge_bases", {})
|
||||
knowledge_bases: dict[str, KnowledgeBaseConfig] = {}
|
||||
for kb_name, kb_conf in kb_data.items():
|
||||
knowledge_bases[kb_name] = KnowledgeBaseConfig(
|
||||
path=kb_conf.get("path", f"config/knowledge_base/{kb_name}"),
|
||||
tone_file=kb_conf.get("tone_file", f"config/tones/{kb_name}_tone.txt"),
|
||||
description=kb_conf.get("description", ""),
|
||||
)
|
||||
|
||||
return RAGConfig(
|
||||
embedding=embedding,
|
||||
qdrant=qdrant,
|
||||
chunking=chunking,
|
||||
llm=llm,
|
||||
tone_file=data.get("tone_file", "config/tone.txt"),
|
||||
knowledge_base_path=data.get("knowledge_base_path", "config/knowledge_base"),
|
||||
knowledge_bases=knowledge_bases,
|
||||
chromadb=data.get("chromadb", {}),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user