import os from bfcl_eval.model_handler.api_inference.openai_completion import OpenAICompletionsHandler from openai import OpenAI import httpx from overrides import override class GLMAPIHandler(OpenAICompletionsHandler): def __init__( self, model_name, temperature, registry_name, is_fc_model, **kwargs, ) -> None: super().__init__(model_name, temperature, registry_name, is_fc_model, **kwargs) self.client = OpenAI( api_key=os.getenv("GLM_API_KEY"), base_url="https://open.bigmodel.cn/api/paas/v4/", timeout=httpx.Timeout(timeout=300.0, connect=8.0), ) @override def _query_FC(self, inference_data: dict): message: list[dict] = inference_data["message"] tools = inference_data["tools"] inference_data["inference_input_log"] = {"message": repr(message), "tools": tools} kwargs = { "messages": message, "model": self.model_name, "temperature": self.temperature, "store": False, } # GLM 4.6 models support reasoning parameter if "glm-4.6" in self.model_name: kwargs["extra_body"] = { "thinking": { "type": "enabled", }, } del kwargs["temperature"] if len(tools) > 0: kwargs["tools"] = tools return self.generate_with_backoff(**kwargs)