摘要: OpenAI的新模型引入了function calling功能,允许LLM根据对话内容自主选择函数。通过在接口中注册函数到tools参数,LLM可以调用这些函数。例如,get_current_temperature函数可以根据位置和单位获取当前温度。调用函数后,LLM会返回一个特定的调用结构,然后根据返回的数据调用函数,再将结果和用户内容结合回复用户。虽然OpenAI的API可能不易获得,但可以通过设置prompt实现function calling,让LLM输出指定的JSON格式,然后解析并执行函数。这种方法灵活性高,不需要新模型或fine-tuning,已在llama3、百度ERNIE Speed和阿里通义上进行测试并取得成功。
OpenAI之前给自己的新模型提供了function calling的能力具体的内容可查看官方的Doc,暨在给LLM提供tools工具的情况下,他能根据与你的对话内容自主选择函数。 OpenAI的Function calling tools=[ { "type": "function", "function": { "name": "get_current_...
摘要: 在Qt 5.15版本中,QModbusTcpClient存在内存泄漏问题,导致循环读取操作时RAM使用量不断增长。通过分析官方示例和使用Visual Studio内存快照,确认了该问题与信号连接有关。源代码审查指出,QModbusTcpClient::enqueueRequest函数中创建的QTimer与超时信号之间的连接未能正确清理。社区已有相关报告,但目前缺乏官方解决方案。作为临时措施,可以通过手动断开相关信号连接来缓解内存泄漏,但这不是长期解决方案,最终需等待Qt团队修复。
问题现象 之前公司内使用的Qt版本均为5.13,后期因为这个版本不是LTS,还有更新的Chromium所以向上升级到了5.15.X(然而开源版本也不是LTS ?)。老的项目继续使用5.13,新的项目就全用5.15开发。 之后有组员向我反映在他的项目里使用QModbusTcpClient循环读取slave的情况下会导致内存不断增长。我自己的项目正好换了一种控制方式,控制反转客户端用了QModbusTcpServer,正好跳过了这个问题。 写了一个测试程序,使用QModbusTcpClient以50ms读取slave数据。大概的代码就长这样 void Client::ru...
简介 warp是一个异步IO构建的Web框架,超级易于使用和简洁。并且由于其作者也是开发了hyper开发者,因此warp在Rust社区中有不错的热度。 并且由于独特的提供了其他Rust Web框架没有的Filter系统,所以以下组件开箱可用: Path routing and parameter extraction / 路径路由及参数析出 Header requirements and extraction / Header参数析出 Query string deserialization / Query字符串反序列化 JSON and Form bodies /...
GoogleTest简介 GTest框架谷歌推出的一款C++单元测试框架,基于BSD3协议开源。因为是C++,所以基本上兼容所有系统。 QT项目集成GTest QT Creator自带的Test集成插件可以快速帮助集成QTest或者GTest,虽然QTest是QT自带的测试框架,但是我还是更喜欢使用纯C++的东西。 新建项目->其他项目->Auto Test Project->配置项目TestCase TestSuit->选择GTest根目录 这就是一个完整可以运行的项目了,运行可以看见测试结果。 需要添加新的测试用例可以通过新建测试用例进行测试 TEST(...
在c++开发中,很容易出现程序Crash而不出现任何提示的情况,尤其是在使用原生c++开发的情况,如果用了QT之类的框架还可能会输出一点点线索(也可能没有),在引入dump之前,我们都是用断点的方式debug,但是一旦发布出去,那就只能打印整个流程的所有log,来“云”调试。 所以为了解决收集和调试发布之后的程序,需要收集程序崩溃之后的信息,微软在其Windows平台上提供了minidump,需要引用WinDbg的库,注册handler也可以生成,但是这一套方案不是特别好用,而且也不能跨平台,所以Breakpad是比较好的第二方案。 Breakpad Breakpad是谷歌开源的一...
去年用着米6为了补充室内灯光,就买了米家台灯,可以用小爱同学控制就很方便。然而后来换了苹果全家桶,Siri只认Homekit套件就有点难受,每次只好使用app去打开关闭,虽然在负一屏上可以放米家的组件,但是那东西经常的没反应,最后还是得去app里关台灯。 最近偶然发现有如Homebridge和Home Assistant的神器,可以让其他的智能家居套上一层皮摇身一变成为HomeKit组件。 Homebridge Home Assistant 安装Homeb...
在上一篇「part1」中,实现了一个能够存储类的成员变量的结构,使用父类Base中的set_field方法,将派生类的成员变量映射进map中,所以我们只需要在Base类中编写一堆方法就能直接调用派生类的成员变量。 例如: 导出成JSON格式数据 string to_json() { string json = "{"; for(auto i = m_table.begin(); i != m_table.end();) { json.append("\"")...
反射(Reflection)机制 是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。wiki) 在其他语言中都有大量的应用,尤其是Java中反射与注解配合使用可以大大的减少工作量,降低重复代码,也能使程序更容易维护。现代Java框架中已经离不开反射与注解了。 目标 最近在公司的QT项目中需要大量的使用数据库,虽然QT提供了非常方便的数据库连接驱动...
提升爬虫效率 提升爬虫的抓取效率无非优化爬虫与服务器的链接速度和效率。最为简单的方式就是“加钱”,使用更大带宽的网络,和更高的并发。 所以很多情况下就可以使用多线程或者分布式的爬虫方案。然而在使用这些模式的爬虫情况下可能会出现另一些影响爬虫效率的因素:入库。 爬虫数据入库 单机情况下爬到的东西一般直接存到本地就行了,直接扔到一个文件内或者数据库内就行。 然而分布式情况下如果爬虫生产的数据存入统一的数据库,每次的存取就会进行一次事务,如果出现失败等情况还需要在爬虫中对这些错误进行处理,不然爬虫就会直接死掉。 爬虫与数据库之间的链接状况也会影响当前的爬虫进程,爬虫无法在数据库...
Selenium本作为测试Web使用的框架,如今用在爬虫的项目上简直无人能敌。它可以使用浏览器像一个真人一样的进行浏览网页。 由于在爬虫和测试领域用的十分多,所以在Python上用Selenium也是十分方便的。 配置环境 首先需要下载浏览器的驱动,各种语言通过Selenium框架直接调用驱动对浏览器进行操作。 https://www.seleniumhq.org/download/ 市面上的所有浏览器官方都为其浏览器编写了WebDriver选择自己需要的版本,WebDriver的版本是否与已安装的浏...