【AI实战日记-手搓聊天机器人】代码健壮性

    def get_responses(self, question) :
        dialogue = [
            {"role": "system", "content": "你是一个家庭智能语音助手,可以控制空调和回答天气,客户如果用英文问,就用英文回答天气,回答问题简洁不失趣味,少于80字,请仅使用纯文本回答,严禁输出任何颜文字、emoji或表情符号。"},
            {"role": "user", "content": question},
        ]
        response = self.client.chat.completions.create(
            model=self.model_name,
            messages=dialogue,
            max_tokens=100,
            tools = all_tools,
            tool_choice = "auto",
        )
        message  = response.choices[0].message




        if message.tool_calls :
            tool_call = message.tool_calls[0]
            if tool_call.function.name == "get_weather_info":
                arguments = json.loads(tool_call.function.arguments)
                weather_result = get_weather_info(location=arguments["location"])


                dialogue.append(message)
                dialogue.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": json.dumps(weather_result, ensure_ascii=False)
                })


                second_response = self.client.chat.completions.create(
                    model=self.model_name,
                    messages=dialogue,
                    max_tokens=100,
                    extra_body={"thinking": {"type": "disabled"}}
                )
                result = second_response.choices[0].message.content
                return result if result else "抱歉,我没有理解您的问题"
            elif  tool_call.function.name == "control_ac":
                print("================to function call of AC Control")
                print(f"Raw arguments: {tool_call.function.arguments}")
                arguments = json.loads(tool_call.function.arguments)
                print(f"Parsed arguments: {arguments}")


                ac_control_result = control_ac(**arguments)


                dialogue.append(message)
                dialogue.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": json.dumps(ac_control_result, ensure_ascii=False)
                })


                second_response = self.client.chat.completions.create(
                    model=self.model_name,
                    messages=dialogue,
                    max_tokens=100,
                    extra_body={"thinking": {"type": "disabled"}}
                )
                result = second_response.choices[0].message.content
                return result if result else "抱歉,我没有理解您的问题"


        result = message.content
        return result if result else "抱歉,我没有理解您的问题"

 

posted @ 2026-04-25 03:05  FBshark  阅读(11)  评论(0)    收藏  举报