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

【python openai function2json小工具】

两种方法 一种openai-swarm中提供的、一种langchain实现的

一、openai工具函数调用

import inspectdef merge_chunk(final_response: dict, delta: dict) -> None:delta.pop("role", None)merge_fields(final_response, delta)tool_calls = delta.get("tool_calls")if tool_calls and len(tool_calls) > 0:index = tool_calls[0].pop("index")merge_fields(final_response["tool_calls"][index], tool_calls[0])def function_to_json(func) -> dict:"""Converts a Python function into a JSON-serializable dictionarythat describes the function's signature, including its name,description, and parameters.Args:func: The function to be converted.Returns:A dictionary representing the function's signature in JSON format."""type_map = {str: "string",int: "integer",float: "number",bool: "boolean",list: "array",dict: "object",type(None): "null",}try:signature = inspect.signature(func)except ValueError as e:raise ValueError(f"Failed to get signature for function {func.__name__}: {str(e)}")parameters = {}for param in signature.parameters.values():try:param_type = type_map.get(param.annotation, "string")except KeyError as e:raise KeyError(f"Unknown type annotation {param.annotation} for parameter {param.name}: {str(e)}")parameters[param.name] = {"type": param_type}required = [param.namefor param in signature.parameters.values()if param.default == inspect._empty]return {"type": "function","function": {"name": func.__name__,"description": func.__doc__ or "","parameters": {"type": "object","properties": parameters,"required": required,},},}if __name__=='__main__':print(function_to_json(merge_chunk))

二、使用langchain

from langchain_core.utils.function_calling import (convert_to_openai_function,convert_to_openai_tool,
)
from langchain_core.tools.convert import tool
from typing import Annotated@tool
def slide_ops(idx: Annotated[int, "元素index"],left: Annotated[int, "元素的左上横坐标"] = None,top: Annotated[int, "元素的左上纵坐标"] = None,width: Annotated[int, "元素的宽度"] = None,height: Annotated[int, "元素的高度"] = None,fontcolor: Annotated[str, "元素的前景颜色"] = None,backcolor: Annotated[int, "元素的背景颜色"] = None,delete: Annotated[bool, "删除此元素"] = None,
):"""修改幻灯片中元素的信息"""...convert_to_openai_function(slide_ops)
convert_to_openai_tool(slide_ops)

相关文章:

【python openai function2json小工具】

两种方法 一种openai-swarm中提供的、一种langchain实现的 一、openai工具函数调用 import inspectdef merge_chunk(final_response: dict, delta: dict) -> None:delta.pop("role", None)merge_fields(final_response, delta)tool_calls delta.get("tool_…...

super()和super().__init__()的解释

一、super 1.基本概念 在python继承当中,super()函数主要用在子类中调用父类的方法。它返回一个特殊对象,这个对象会帮我们调用父类方法 class Parent:def __init__(self, name):self.name namedef say_hello(self):print(f"Hello, Im {self.nam…...

【C++】—— 多态(下)

【C】—— 多态(下) 4 多态的原理 4.1 虚函数表指针4.2 多态的原理4.3 动态绑定和静态绑定 4.4 虚函数表 4 多态的原理 4.1 虚函数表指针 我们以一道题来引入多态的原理 下面编译为 32 位程序的运行结果是什么() A、编译报错  B…...

idea 2023 配置 web service

前言 能在网上查到的资料,都是比较老的,搞了一上午才配置好了环境 因此记录一下,服务你我他 我的环境: java 1.8,Idea2023.1 配置web service 服务端 直接新建一个java新项目 下载插件 添加框架支持 启动项目 配置web service 客户端 新建项目,下载三个插件的步骤和上面服务…...

MYSQL数据库SQL+DQL

关于MySQL数据库中的SQL和DQL,以下是一些关键信息: SQL概述 SQL(Structured Query Language,结构化查询语言)是用于操作关系型数据库的编程语言。它定义了一套操作关系型数据库的统一标准。SQL语句可以单行或多行书写…...

Java中的异常Throwable

原文链接https://javaguide.cn/java/basis/java-basic-questions-03.html#%E5%BC%82%E5%B8%B8 Java 异常类层次结构图 Exception 和 Error 的区别 在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类: Excep…...

Day4顺序表c++代码实现

代码中实现&#xff0c;顺序表的初始化&#xff0c;插入&#xff0c;查找&#xff0c;删除 废话不多说&#xff0c;直接上 #include<iostream> using namespace std; #define eleType int struct SequentialList {eleType* elements;//指针int size;int capacity;//容量…...

将图片转换成base64格式

1.先创建一个canvas对象&#xff0c;然后给canvas对象设置图片对象的宽高&#xff0c;再调用canvas的getContext获取2d上下文对象&#xff0c;再调用上下文对象的drawImage方法&#xff0c;再通过canvase对象的toDataURL方法&#xff0c;将图片转换成base64格式的字符串 2.将b…...

征服ES(ElasticSearch)的慢查询实战

在 Elasticsearch&#xff08;ES&#xff09;中&#xff0c;进行大数据查询时&#xff0c;常常会由于多种因素而导致性能显著下降。接下来&#xff0c;我们将深入探讨几种常见情况及其相应的解决方案。 一、常见问题分析 深分页、大排序 大量数据扫描与多分片上的多次排序会严…...

如何才能从普通程序员转行AI大模型?

人工智能已经成为一个非常火的方向。作为一名普通的程序员&#xff0c;该如何转向AI大模型方向。以程序员为例&#xff0c;看看普通程序员如何开启AI大模型之路。 接下来给大家分享一下程序员转大模型的一些注意点&#xff1a; 作为一名程序员&#xff0c;在考虑转行至大模型领…...

【番外】软件设计师中级笔记关于数据库技术更新笔记问题

提问 由于软件设计师中级笔记中第九章数据库技术基础的笔记内容太多&#xff0c;我应该分几期发布呢&#xff1f;还是一期一次性发布完成。 如果分为一期发布&#xff0c;可能需要给我多一些时间&#xff0c;由于markdown格式有所差异&#xff0c;所以我需要部分进行修改与调…...

【代码】约瑟夫问题——故事背景

Hello&#xff01;大家好&#xff0c;我是学霸小羊&#xff0c;今天先来讲讲约瑟夫问题的背景。 在古罗马时期&#xff0c;犹太历史学家约瑟夫斯领导犹太人反对罗马帝国的统治&#xff0c;并与罗马军队进行激烈的战斗。然而&#xff0c;在罗马军队的围困下&#xff0c;约瑟夫与…...

什么是事件冒泡和事件捕获

文章目录 1. 事件传播机制2. 事件冒泡&#xff08;Event Bubbling&#xff09;3. 事件捕获&#xff08;Event Capturing&#xff09;4. 事件冒泡和事件捕获的区别5. 阻止事件传播总结 事件冒泡和事件捕获是两种处理网页中事件传播的机制&#xff0c;特别是在 JavaScript 中处理…...

高端优质建站公司具备哪些优势?2024高端建站公司哪家好

从某种程度上讲&#xff0c;一个出色的建站公司需具备将无形的品牌价值巧妙转化为直观视觉元素的能力&#xff0c;这一转化过程极为考究&#xff0c;涵盖了设计的精细程度、色彩运用的巧妙以及空间布局的智慧&#xff0c;这些要素均不容忽视。 接下来考察网站的内容策划能力同…...

word删除空白页 | 亲测有效

想要删掉word里面的末尾空白页&#xff0c;但是按了delete之后也没有用 找了很久找到了以下亲测有效的方法 1. 通过鼠标右键在要删除的空白页面处显示段落标记 2. 在字号输入01&#xff0c;按ENTER&#xff08;回车键&#xff09; 3.成功删除了&#xff01;&#xff01;...

YashanDB学习-服务启停

YashanDB学习-服务启停 1、查看YashanDB 当前实例状态和数据库名称2、使用 yasboot 工具启停YashanDB3、服务器重启后无法通过yasboot命令运维管理数据库4、正常关闭数据库的方式 数据库安装过程中将实例自动切换成OPEN阶段&#xff0c;并创建名为yashandb的数据库。 1、查看Ya…...

在未排序的整数数组找到最小的缺失正整数

&#x1f381;&#x1f449;点击进入文心快码 Baidu Comate 官网&#xff0c;体验智能编码之旅&#xff0c;还有超多福利&#xff01;&#x1f381; &#x1f50d;【大厂面试真题】系列&#xff0c;带你攻克大厂面试真题&#xff0c;秒变offer收割机&#xff01; ❓今日问题&am…...

TCP连接管理机制:三次握手四次挥手

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 连接管理机制三次握手三次握手的目的三次握手的步骤第一次握手第二次握手第三次握手注意&#xff1a; 为什么建立连接是三次握手&…...

1022. 宠物小精灵之收服

思路 双层dp 代码 #include <bits/stdc.h> using namespace std;const int N 1010, mod 1e9 7;int n, m, k, x, y, z, ans, t; int w[N], f[N][N];void solve() {cin >> n >> m >> k;for (int i 1; i < k; i ){cin >> x >> y;f…...

人工智能生成内容(AI-Generated Content)

此外&#xff0c;ALGC还在影视剧本创作、音乐创作、设计与创意、虚拟助手与聊天机器人、教育与培训、新闻报道与文学创作等领域发挥着重要作用。 三、技术架构 ALGC产业生态体系通常呈现为上中下三层架构&#xff1a; 四、优势与挑战 优势&#xff1a; 挑战&#xff1a; 一、…...

不止于仿真:用Vivado自带的仿真器做FPGA设计验证与快速迭代

从仿真到验证&#xff1a;Vivado仿真器在FPGA设计中的高阶应用 在FPGA开发领域&#xff0c;仿真环节常常被工程师视为"不得不做"的流程性工作&#xff0c;而非设计验证的核心手段。这种认知导致许多项目陷入"烧录-调试-修改"的循环中&#xff0c;消耗大量时…...

告别模组冲突:用Nexus Mods App打造稳定游戏体验的智能解决方案

告别模组冲突&#xff1a;用Nexus Mods App打造稳定游戏体验的智能解决方案 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App 还在为游戏模组冲突而烦恼吗&#xff1f;每次安…...

Source Han Serif CN:企业级开源字体终极实战指南

Source Han Serif CN&#xff1a;企业级开源字体终极实战指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在当今数字化时代&#xff0c;企业面临字体选择的两难困境&#xff1a;商…...

进化算法驱动机械爪设计优化:从原理到EvoClaw项目实践

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“EvoClaw”。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但点进去一看&#xff0c;发现这是一个关于“进化算法驱动的机械爪设计优化”的开源项目。简单来说&#xff0c;就是利用计算机…...

【实战指南】STM32CubeMX UART配置进阶:从阻塞到中断+DMA的高效数据通信

1. UART通信模式选择指南 第一次接触STM32的UART通信时&#xff0c;很多人都会纠结该用哪种模式。我在实际项目中尝试过所有模式&#xff0c;总结下来就是&#xff1a;没有最好的模式&#xff0c;只有最适合当前场景的模式。先说说三种典型场景&#xff1a; 调试打印&#xff1…...

Boss直聘职位数据自动化采集:Python爬虫架构设计与工程实践

1. 项目概述与核心价值最近在技术社区里&#xff0c;看到不少朋友在讨论一个叫longsizhuo/BossZhiPin_Job_Search的项目。光看名字&#xff0c;你大概就能猜到&#xff0c;这是一个跟“Boss直聘”和“职位搜索”相关的自动化工具。作为一个在招聘数据分析和自动化领域摸爬滚打了…...

怎样免费让老Mac重获新生:OpenCore Legacy Patcher专业教程

怎样免费让老Mac重获新生&#xff1a;OpenCore Legacy Patcher专业教程 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 想让你的旧Mac重新焕发活力吗&#xf…...

基于大语言模型的本地语义搜索工具LLocalSearch部署与应用指南

1. 项目概述&#xff1a;一个能“读懂”你电脑的本地搜索工具 如果你和我一样&#xff0c;电脑里塞满了各种文档、邮件、聊天记录和代码片段&#xff0c;那么“找东西”这件事&#xff0c;绝对能排进日常最耗时的任务前三。传统的文件搜索&#xff0c;比如Windows自带的搜索或者…...

阴阳师自动化脚本OAS终极指南:轻松解放双手的完整教程

阴阳师自动化脚本OAS终极指南&#xff1a;轻松解放双手的完整教程 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师自动化脚本OAS是一款专门为《阴阳师》游戏设计的智能自动…...

Arduino与手机蓝牙通信:nRF8001 BLE模块硬件连接与软件配置全解析

1. 项目概述与核心价值如果你手头有一个Arduino项目&#xff0c;想让它和你的手机“说说话”&#xff0c;比如把传感器数据无线传到手机App上显示&#xff0c;或者用手机App远程控制几个LED灯&#xff0c;那么nRF8001这个蓝牙低功耗&#xff08;BLE&#xff09;模块绝对是你绕不…...