最近才发现qq机器人已经可以个人开发,而且这个星期qq群的权限也已经开放给个人开发者。所以有动力给自己做一个猫娘机器人了。在这之中结合LLM及各项技术,希望能完善开发出一个好用的东西。 接下来也会根据开发进度发一些相关的文章,今天是第一篇正式文章,之前的function calling系列内容也算是一部分基础。 问题分类器简介 制造一只猫娘,只是单纯的让LLM角色扮演一只猫娘那么就算现在在随便什么网页大模型设置一段prompt都能完成这个功能,还不用花钱。 所以,我的目标是她能实现除了对话之外的一系列功能,这就是Agent(智能体)的基本概念,能根据不同的需求从外部采集额外的数据...
摘要: 这篇文章介绍了Ollama尚未完成的function calling功能在不同框架下的实现方式。作者列举了几个支持Ollama function calling的SDK,包括langchain、ollama-rs、Hermes-Function-Calling、Qwen-Agent和liteLLM,并对这些框架的实现方式进行了对比分析。尽管Ollama官方尚未支持这一功能,但通过精心设计的prompt,这些框架仍能实现类似的功能。文章还讨论了开源模型在未微调情况下,通过长提示词实现function calling的可行性及其效果。
Ollama实际上是支持function calling这个功能的,但是在 https://github.com/ollama/ollama/blob/cb42e607c5cf4d439ad4d5a93ed13c7d6a09fc34/docs/openai.md?plain=1#L74-L82 其OpenAI兼容介绍中可以看到OpenAI接口实际并未完成。 所以要使用Http Api实现function calling的话可以参考我之前的文章,根据system prompt来控制LLM大模型的回复格式,并自己实现动态函数注册和内容解析就可以。 Ollama各路LLM 框架下的fu...
摘要: 根据上次文章的思路写一份在任意大模型实现Function调用的Demo,用Python和Ollama(或OpenAI API兼容的后端)来实现。
根据上次文章的思路来写一份在任意大模型实现Function calling的Demo,将上次的伪代码写成代码。 Requirement Python Ollama(或任意OpenAI API兼容的后端,当然你也可以根据本份demo修改成兼容其他的API) Demo repo: https://by.cx/posts/programming/function-calling-demo https://github.com/tusik/any-function-calling/blob/fb8e357b6b6e03befb4570e943ee436cd68f9990/o...
摘要: 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("\"")...