mooon-agent发送状态机代码摘要

简介:
发送状态机比接收状态机相对要简单

  • send_machine.h
 
  1. #ifndef MOOON_AGENT_SEND_MACHINE_H  
  2.  
  3. #define MOOON_AGENT_SEND_MACHINE_H  
  4.  
  5. #include <agent/config.h>  
  6.  
  7. AGENT_NAMESPACE_BEGIN  
  8.  
  9.  
  10.  
  11. class CAgentConnector;  
  12.  
  13. class CSendMachine  
  14.  
  15. {  
  16.  
  17. public:  
  18.  
  19.     CSendMachine(CAgentConnector* connector);  
  20.  
  21.     bool is_finish() const;  
  22.  
  23.     util::handle_result_t continue_send();  
  24.  
  25.     util::handle_result_t send(const char* msg, size_t msg_size);  
  26.  
  27.     void reset();  
  28.  
  29.       
  30.  
  31. private:  
  32.  
  33.     CAgentConnector* _connector;  
  34.  
  35.       
  36.  
  37. private:  
  38.  
  39.     const char* _cursor;  
  40.  
  41.     size_t _remain_size;   
  42.  
  43. };  
  44.  
  45.  
  46.  
  47. AGENT_NAMESPACE_END  
  48.  
  49. #endif // MOOON_AGENT_SEND_MACHINE_H  
  • send_machine.cpp
 
  1. #include "send_machine.h" 
  2.  
  3. #include "agent_connector.h" 
  4.  
  5. AGENT_NAMESPACE_BEGIN  
  6.  
  7.  
  8.  
  9. CSendMachine::CSendMachine(CAgentConnector* connector)  
  10.  
  11.  :_connector(connector)   
  12.  
  13. {  
  14.  
  15.     reset();  
  16.  
  17. }  
  18.  
  19.  
  20.  
  21. // 当前消息是否已经发送完  
  22.  
  23. bool CSendMachine::is_finish() const  
  24.  
  25. {  
  26.  
  27.     return 0 == _remain_size;  
  28.  
  29. }  
  30.  
  31.  
  32.  
  33. // 发送消息,可能是一个消息的第一次发送,也可能是一个消息的非第一次发送  
  34.  
  35. util::handle_result_t CSendMachine::continue_send()  
  36.  
  37. {  
  38.  
  39.     ssize_t bytes_sent = _connector->send(_cursor, _remain_size);  
  40.  
  41.     if (bytes_sent > -1)  
  42.  
  43.     {  
  44.  
  45.         _cursor += bytes_sent;  
  46.  
  47.         _remain_size -= bytes_sent;  
  48.  
  49.     }  
  50.  
  51.       
  52.  
  53.     return is_finish()   
  54.  
  55.          ? util::handle_finish   
  56.  
  57.          : util::handle_continue;  
  58.  
  59. }  
  60.  
  61.  
  62.  
  63. // 发送消息,总是一个消息的第一次发送  
  64.  
  65. // 参数说明:  
  66.  
  67. // msg - 需要发送的消息  
  68.  
  69. // msg_size - 需要发送的消息字节数  
  70.  
  71. util::handle_result_t CSendMachine::send(const char* msg, size_t msg_size)  
  72.  
  73. {  
  74.  
  75.     _cursor = msg;  
  76.  
  77.     _remain_size = msg_size;  
  78.  
  79.       
  80.  
  81.     return continue_send();  
  82.  
  83. }  
  84.  
  85.  
  86.  
  87. void CSendMachine::reset()  
  88.  
  89. {  
  90.  
  91.     _cursor = NULL;  
  92.  
  93.     _remain_size = 0;  
  94.  
  95. }  
  96.  
  97.  
  98.  
  99. AGENT_NAMESPACE_END  


本文转自eyjian 51CTO博客,原文链接:http://blog.51cto.com/mooon/910295 ,如需转载请自行联系原作者



相关文章
|
存储 API
LangChain与智能Agent构建问题之MetaGPT中工程师智能体代码错误如何解决
LangChain与智能Agent构建问题之MetaGPT中工程师智能体代码错误如何解决
312 1
|
人工智能 自然语言处理 搜索推荐
微软开源基于ChatGPT的,超级文本代码智能体
【7月更文挑战第17天】微软的TaskWeaver是开源的LLM框架,聚焦领域特定数据分析与个性化需求。它以代码优先,将用户请求转为可执行代码,增强处理复杂任务的效率和准确性。通过用户定义插件实现定制,适应多种场景。然而,转化请求可能引入复杂性和错误,非技术用户使用插件有难度,且开源带来的安全与隐私问题需关注。[论文链接](https://arxiv.org/abs/2311.17541)**
367 4
|
人工智能 搜索推荐 机器人
AppFlow无代码轻松搭建模型Agent
使用钉钉,现在每个人都能轻松创建自己的AI助手。通过结合各种插件,如天气、机票查询和地图,你可以定制个性化的工作助手。利用AppFlow,即使没有编程经验也能搭建AI Agent。步骤包括:1) 在钉钉开放平台创建应用,获取凭证;2) 在钉钉卡片平台创建AI卡片实例;3) 在AppFlow配置连接流,添加所需插件;4) 创建钉钉机器人,设置HTTP消息接收并关联AppFlow的Webhook。完成这些步骤后,你就可以在钉钉群中与你的AI助手互动了。
52517 13
|
安全 Shell
某易论坛被植入利用ANI漏洞传播 Backdoor.Win32.Agent.ahj 的代码
某易论坛被植入利用ANI漏洞传播 Backdoor.Win32.Agent.ahj 的代码
|
存储 搜索推荐 前端开发
变革来袭!多Agent框架MuAgent带你解锁代码开发新姿势
在这个信息技术爆炸的时代,我们都知道大型语言模型(LLM)拥有处理复杂问题的能力,但当遇到编程难题这种更高级的挑战时,单独的LLM Agent可能就不够看了。社区里动起了脑筋,玩出了新花样——组合多个Agent来应对高难度挑战!正如Multi Agent的构建过程所示,与其说我们是在设计Agents,不如说是对当前需求的深入理解后去构建出一条专属于某个场景的SOP。
2115 2
|
人工智能 数据可视化 Windows
【AI Agent系列】【LangGraph】3. 一行代码让你的 LangGraph 结构可视化!
【AI Agent系列】【LangGraph】3. 一行代码让你的 LangGraph 结构可视化!
2692 0
|
存储 人工智能 API
【AI Agent系列】【MetaGPT多智能体学习】7. 剖析BabyAGI:原生多智能体案例一探究竟(附简化版可运行代码)
【AI Agent系列】【MetaGPT多智能体学习】7. 剖析BabyAGI:原生多智能体案例一探究竟(附简化版可运行代码)
937 0
|
人工智能 决策智能
【AI Agent系列】【MetaGPT多智能体学习】6. 多智能体实战 - 基于MetaGPT实现游戏【你说我猜】(附完整代码)
【AI Agent系列】【MetaGPT多智能体学习】6. 多智能体实战 - 基于MetaGPT实现游戏【你说我猜】(附完整代码)
911 0
|
人工智能 前端开发 决策智能
【AI Agent系列】【MetaGPT多智能体学习】5. 多智能体案例拆解 - 基于MetaGPT的智能体辩论(附完整代码)
【AI Agent系列】【MetaGPT多智能体学习】5. 多智能体案例拆解 - 基于MetaGPT的智能体辩论(附完整代码)
1023 0
|
API 开发者
Modelscope Agent实操(一):0代码创建、发布并分享一个专属Agent
在前一段时间,魔搭社区推出了开源版GPTs,期望未来让大家能更轻松地搭建Agent。

热门文章

最新文章