【Agent】使用 Python 结合 OpenAI 的 API 实现一个支持 Function Call 的程序,修改本机的 txt 文件

使用 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)

代码说明:

  1. 定义修改文件的函数modify_txt_file 函数接收文件路径和新内容作为参数,尝试打开文件并将新内容写入,同时处理可能出现的异常。
  2. 定义函数元数据functions 列表中包含了 modify_txt_file 函数的元数据,描述了函数的名称、参数类型和参数描述等信息,供 OpenAI 模型识别和调用。
  3. 与 OpenAI 模型交互chat_with_openai 函数向 OpenAI 模型发送用户的提示信息,并传递函数元数据。如果模型决定调用函数,就执行相应的函数并返回结果;否则,直接返回模型的文本响应。
  4. 主程序 :设置用户的提示信息,调用 chat_with_openai 函数并打印结果。

请将 "your_api_key" 替换为你自己的 OpenAI API Key,并根据实际情况修改文件路径和用户提示信息。

相关推荐
nbsaas-boot28 分钟前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
仗剑_走天涯31 分钟前
基于pytorch.nn模块实现线性模型
人工智能·pytorch·python·深度学习
chao_78932 分钟前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
斜月三4 小时前
windows部署多实例filebeat监控相同路径下文件
windows·filebeat
chao_7895 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
烛阴5 小时前
Python装饰器解除:如何让被装饰的函数重获自由?
前端·python
FreeBuf_6 小时前
微软365 PDF导出功能存在本地文件包含漏洞,可泄露敏感服务器数据
服务器·microsoft·pdf
noravinsc6 小时前
django 一个表中包括id和parentid,如何通过parentid找到全部父爷id
python·django·sqlite
ajassi20006 小时前
开源 python 应用 开发(三)python语法介绍
linux·python·开源·自动化
沉默媛6 小时前
如何安装python以及jupyter notebook
开发语言·python·jupyter