使用 Python 结合 OpenAI 的 API 来实现一个支持 Function Call 的程序,修改本机的 txt 文件。需要注意,在运行代码前,要确保已经安装了 openai
库,并且拥有有效的 OpenAI API Key。
python
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 result
return 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,并根据实际情况修改文件路径和用户提示信息。