import jsonimport osimport time
import requestsfrom openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))# 一个发送邮件的函数工具def send_email(quote, recipient="霍格沃兹测试开发学社@email.com"): # Print the quote and recipient for debugging purposes print(f"生成消息:\n {quote}\n\n发送邮件给: {recipient}") # Return a success message return "发送邮件给" + recipient# 工具的提示词。为了让大模型更好理解工作的作用。tools = [{ "type": "function", "function": { "name": "send_email", "description": "Sends a quote via email", "parameters": { "type": "object", "properties": { "quote": { "type": "string", "description": "A generated funny quote" } }, "required": [ "quote" ] } }}]# 1. 创建助手assistant = client.beta.assistants.create( name="Wise Guy", instructions="你是一位聪明的哲学家,会产生有趣的引言。", model="gpt-3.5-turbo-1106", tools=tools)# 2. 创建线程thread = client.beta.threads.create()# 3. 传入 prompt 并执行线程message = client.beta.threads.messages.create( thread_id=thread.id, role="user", content="创建一个笑话并且使用邮件发送",)# 4. 执行消息run_res = client.beta.threads.runs.create( thread_id=thread.id, assistant_id=assistant.id, )# 5. 等待回复def wait_on_run(run): while run.status == "queued" or run.status == "in_progress": run = client.beta.threads.runs.retrieve( thread_id=thread.id, run_id=run.id, ) print(f"执行的状态为:{run.status}") time.sleep(0.5) return run# 6. 获取回复的结果run_res = wait_on_run(run_res)# 7. 如果回复的结果需要调用工具if run_res.status == "requires_action": # 提交工具的返回信息 tool_call = run_res.required_action.submit_tool_outputs.tool_calls[0] name = tool_call.function.name arguments = json.loads(tool_call.function.arguments) print("等待返回的参数:", name) print(f"函数参数为:{arguments}") # 调用发送邮件工具 task = send_email(**arguments) # 提交工具执行后的结果信息。 run = client.beta.threads.runs.submit_tool_outputs( thread_id=thread.id, run_id=run_res.id, tool_outputs=[ { "tool_call_id": tool_call.id, "output": "done", } ], ) print("==========调用 chatgpt 执行内容") run = wait_on_run(run) print("==========获取返回信息") print(client.beta.threads.messages.list(thread_id=thread.id, order="asc").model_dump_json(indent=2))
评论