【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,并根据实际情况修改文件路径和用户提示信息。

相关推荐
小oo呆3 小时前
【学习心得】Python多线程
python
happylifetree6 小时前
Python70:核心语法-函数进阶-案例2
python
王中阳Go7 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
BK贝壳7 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
Sakura_j_h_8 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
supabc1239 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi9 小时前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent
ZhengEnCi10 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent
隔窗听雨眠11 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
镜子AI11 小时前
镜子AI工程教程:用Python实现关键词布局检查器与语义改写查重(附完整代码)
人工智能·python·microsoft