【Agent】使用 Python 结合 OpenAI 的 API 实现一个支持 Function Call 的程序,修改本机的 txt 文件
使用 Python 结合 OpenAI 的 API 来实现一个支持 Function Call 的程序,修改本机的 txt 文件。需要注意,在运行代码前,要确保已经安装了 openai
库,并且拥有有效的 OpenAI API Key。
import openai
import os# 设置你的 OpenAI API Key
openai.api_key = "your_api_key"# 定义修改 txt 文件的函数
def modify_txt_file(file_path, new_content):try:with open(file_path, 'w', encoding='utf-8') as file:file.write(new_content)return f"文件 {file_path} 已成功修改。"except Exception as e:return f"修改文件时出现错误: {str(e)}"# 定义函数的元数据,供 OpenAI 模型使用
functions = [{"name": "modify_txt_file","parameters": {"type": "object","properties": {"file_path": {"type": "string","description": "要修改的 txt 文件的路径"},"new_content": {"type": "string","description": "要写入文件的新内容"}},"required": ["file_path", "new_content"]}}
]# 与 OpenAI 模型交互
def chat_with_openai(prompt):response = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",messages=[{"role": "user", "content": prompt}],functions=functions,function_call="auto")message = response["choices"][0]["message"]if message.get("function_call"):function_name = message["function_call"]["name"]parameters = message["function_call"]["parameters"]if function_name == "modify_txt_file":result = modify_txt_file(parameters["file_path"], parameters["new_content"])return resultreturn message["content"]if __name__ == "__main__":# 用户输入的提示信息user_prompt = "请将 /paths/file.txt 文件的内容修改为 '这是新的文件内容。'"result = chat_with_openai(user_prompt)print(result)
代码说明:
- 定义修改文件的函数:
modify_txt_file
函数接收文件路径和新内容作为参数,尝试打开文件并将新内容写入,同时处理可能出现的异常。 - 定义函数元数据:
functions
列表中包含了modify_txt_file
函数的元数据,描述了函数的名称、参数类型和参数描述等信息,供 OpenAI 模型识别和调用。 - 与 OpenAI 模型交互:
chat_with_openai
函数向 OpenAI 模型发送用户的提示信息,并传递函数元数据。如果模型决定调用函数,就执行相应的函数并返回结果;否则,直接返回模型的文本响应。 - 主程序:设置用户的提示信息,调用
chat_with_openai
函数并打印结果。
请将 "your_api_key"
替换为你自己的 OpenAI API Key,并根据实际情况修改文件路径和用户提示信息。