#1.设定目标
what_i_want_to_know = [{"role": "user", "content": f"汇总3个function的aiXpert的结果"}]
#2.自定义function,3个
def search_baidu(keyword):
return f"{keyword}是一个技术博主"
def search_google(keyword):
return f"{keyword}是一个后端工程师"
def search_bing(keyword):
return f"{keyword}是一个Python爱好者"
采用Tool的标准写法:
tools = [
{
"type": "function",
"function": {
"name": "search_baidu",
"parameters": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
}
},
"required": ["keyword"],
},
}
},
{
"type": "function",
"function": {
"name": "search_google",
"parameters": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
}
},
"required": ["keyword"],
},
}
},
{
"type": "function",
"function": {
"name": "search_bing",
"parameters": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
}
},
"required": ["keyword"],
},
}
}
]
available_functions = { "search_baidu": search_baidu, "search_google": search_google, "search_bing": search_bing }
def run_chat(messages):
response = openai.chat.completions.create(
model ="gpt-3.5-turbo-1106",
messages=messages,
tools =tools,
tool_choice="auto",
)
return response.choices[0].message
first_response = run_chat(what_i_want_to_know)
tool_calls = first_response.tool_calls
# 检查是否需要调用函数
if tool_calls:
# 解析所有需要调用的函数及参数
what_i_want_to_know.append(first_response) # 注意这里要将openai的回复也拼接到消息列表里
# 将所有函数调用的结果拼接到消息列表里
for tool_call in tool_calls:
function_name = tool_call.function.name
function_to_call = available_functions[function_name]
function_args = json.loads(tool_call.function.arguments)
function_response = function_to_call(**function_args)
what_i_want_to_know.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"name": function_name,
"content": function_response,
}
)
print(run_chat(what_i_want_to_know))