

import os
from foundation.base.config import config_handler
from foundation.logger.loggering import server_logger
from openai import OpenAI


class BaseApiPlatform:

    def __init__(self):
        self.api_key = os.getenv("API_KEY")
        self.headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }

    
    def get_openai_client(self , model_server_url , api_key):
        """
            获取openai模型 client
        """
        server_logger.info(f"get_openai_client -> model_server_url:{model_server_url},api_key:{api_key}")
        # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx",
        client = OpenAI(
            api_key=api_key,
            base_url=model_server_url,
        )
        return client



    def get_chat_model(self):
        """
        获取chat模型
        :return:
        """
        raise NotImplementedError
    


    def get_embeddings(self, texts: list[str]):
        """
        向量化文本
        :param texts: 文本列表
        :return: 向量列表
        """
        raise NotImplementedError


    def rerank(self, input_query: str, documents: list, top_n: int = 5, return_documents: bool = True):
        """
            使用 BGE 重排序模型进行相关性打分
            使用重排序模型对候选文档进行排序
            :param query: 用户查询语句
            :param documents: 候选文本列表
            :param top_n: 返回前 N 个结果
            :return: 排序后的结果列表，包含文本和相似度分数
        """
        raise NotImplementedError

    


    