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

相关推荐
咕白m6254 小时前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
SelectDB21 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码1 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵2 天前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li2 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸2 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学2 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
花酒锄作田3 天前
Pydantic校验配置文件
python
hboot3 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi3 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化