import os import time from bfcl_eval.constants.enums import ModelStyle from bfcl_eval.model_handler.api_inference.openai_completion import OpenAICompletionsHandler from writerai import Writer class WriterHandler(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.model_style = ModelStyle.WRITER self.client = Writer(api_key=os.getenv("WRITER_API_KEY")) #### FC methods #### 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} start_time = time.time() if len(tools) > 0: api_response = self.client.chat.chat( messages=message, model=self.model_name, temperature=self.temperature, tools=tools, tool_choice="auto", ) else: api_response = self.client.chat.chat( messages=message, model=self.model_name, temperature=self.temperature, ) end_time = time.time() return api_response, end_time - start_time