first commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""
|
||||
Adapter Pattern برای API providers — سوئیچ بین GapGPT و Avalai
|
||||
تنظیمات فعلی: GapGPT بهعنوان provider اصلی
|
||||
Avalai بهعنوان fallback نگه داشته شده.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
|
||||
from openai import OpenAI
|
||||
|
||||
from .config import RAGConfig, load_rag_config
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def get_embedding_client(config: RAGConfig | None = None) -> OpenAI:
|
||||
"""
|
||||
ساخت کلاینت OpenAI برای Embedding بر اساس provider فعال.
|
||||
provider از config.embedding.provider خوانده میشود: "gapgpt" یا "avalai"
|
||||
"""
|
||||
cfg = config or load_rag_config()
|
||||
emb = cfg.embedding
|
||||
logger.info(emb.provider)
|
||||
|
||||
if emb.provider == "avalai":
|
||||
env_var = emb.avalai_api_key_env or emb.api_key_env or "AVALAI_API_KEY"
|
||||
api_key = os.environ.get(env_var)
|
||||
base_url = emb.avalai_base_url or emb.base_url or "https://api.avalai.ir/v1"
|
||||
else:
|
||||
env_var = emb.api_key_env or "GAPGPT_API_KEY"
|
||||
api_key = os.environ.get(env_var)
|
||||
base_url = emb.base_url or "https://api.gapgpt.app/v1"
|
||||
logger.info(api_key+" "+base_url)
|
||||
|
||||
return OpenAI(api_key=api_key, base_url=base_url)
|
||||
|
||||
|
||||
def get_chat_client(config: RAGConfig | None = None) -> OpenAI:
|
||||
"""
|
||||
ساخت کلاینت OpenAI برای Chat/LLM بر اساس provider فعال.
|
||||
provider از config.embedding.provider خوانده میشود (مشترک بین embedding و chat).
|
||||
"""
|
||||
cfg = config or load_rag_config()
|
||||
llm = cfg.llm
|
||||
provider = cfg.embedding.provider
|
||||
|
||||
|
||||
logger.info(provider)
|
||||
if provider == "avalai":
|
||||
env_var = llm.avalai_api_key_env or llm.api_key_env or "AVALAI_API_KEY"
|
||||
api_key = os.environ.get(env_var)
|
||||
base_url = llm.avalai_base_url or llm.base_url or "https://api.avalai.ir/v1"
|
||||
else:
|
||||
env_var = llm.api_key_env or "GAPGPT_API_KEY"
|
||||
api_key = os.environ.get(env_var)
|
||||
base_url = llm.base_url or "https://api.gapgpt.app/v1"
|
||||
logger.info(api_key,base_url)
|
||||
|
||||
return OpenAI(api_key=api_key, base_url=base_url)
|
||||
Reference in New Issue
Block a user