当前位置: 首页 > backend >正文

【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)

代码说明:

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

http://www.xdnf.cn/news/4437.html

相关文章:

  • 如何检查 Watchtower 是否正常工作及更新未生效的排查方法【日常排错】
  • 探寻程序开发的个人密码
  • excel 批量导出图片并指定命名
  • Excel点击单元格内容消失
  • 龙虎榜——20250507
  • LVGL -meter的应用
  • phpstudy升级新版apache
  • 如何在金仓数据库KingbaseES中新建一个数据库?新建一个表?给表添加一个字段?
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.1 基础图表绘制(折线图/柱状图/散点图)
  • 把本地的文件拷贝到wsl的文件夹下或者 wsl读取本地的文件
  • 使用node.js创建一个简单的服务器
  • WD5040L、 7V 至 37V 的宽输入电压,输出电压范围为 3.3V 至 36V,6A输出、保护功能强,电源管理利器!
  • Redis的缓存穿透、缓存击穿和缓存雪崩
  • ai说什么是注解,并以angular ts为例
  • Go——项目实战
  • 【强化学习】强化学习算法 - 多臂老虎机问题
  • 精益数据分析(47/126):深挖UGC商业模式的关键要点与指标
  • 多模态大语言模型arxiv论文略读(六十二)
  • uniapp自定义底部导航栏h5有效果小程序无效的解决方案
  • 鞅与停时 - 一种特别的概率论问题
  • 讲解什么是快充诱骗协议芯片及它的工作原理和应用场景
  • 构建生命大模型,开拓教育新境界——启智书院举办十二周年庆典暨教育新生态跨界共拓峰会
  • 【存储管理—动态不等长存储资源分配算法】
  • 可执行文件格式(ELF格式)以及进程地址空间第二讲【Linux操作系统】
  • 【django.db.utils.OperationalError: unable to open database file】
  • Redis-黑马点评
  • 固件测试:mac串口工具推荐
  • 第1章 算法设计基础
  • draw.io流程图使用笔记
  • 机器人跑拉松是商业噱头还是技术进步的必然体现