🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
AssistantAgent.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstAI/ChatAgent.hpp"
25#include "AstAI/ChatEventHandler.hpp"
26#include "AstAI/LLMClient.hpp"
27#include "AstAI/LLMConfig.hpp"
28#include "AstAI/ChatTool.hpp"
29#include "AstAI/ChatTools.hpp"
30#include "AstAI/ChatMessage.hpp"
31#include "AstAI/ChatMessages.hpp"
32#include <string>
33#include <memory>
34
35AST_NAMESPACE_BEGIN
36
46class AST_AI_API AssistantAgent : public ChatAgent
47{
48public:
49 // —— 工厂方法 ——
50
52 static AssistantAgent DefaultAgent();
53
54 static AssistantAgent* NewDefaultAgent();
55
57 static AssistantAgent SpaceEngineer();
58
60 static AssistantAgent* NewSpaceEngineer();
61
62public:
63 AssistantAgent() = default;
64 explicit AssistantAgent(StringView systemPrompt);
65 ~AssistantAgent() = default;
66 AssistantAgent(AssistantAgent&&) = default;
67 AssistantAgent& operator=(AssistantAgent&&) = default;
68
69 // —— 身份 ——
70
72 void setSystemPrompt(StringView prompt);
74 const std::string& systemPrompt() const;
75
76 // —— 能力 ——
77
80 template<typename Func>
81 ChatTool* addTool(Func func)
82 {
83 return tools_.addTool(func);
84 }
85
87 void addTool(std::unique_ptr<ChatTool> tool);
88
90 ChatTools& tools();
91
92 // —— 配置 ——
93
95 LLMConfig& config();
97 const LLMConfig& config() const;
98
99 // —— 客户端 ——
100
102 void setClient(std::unique_ptr<LLMClient> client);
104 LLMClient& client();
105
106 // —— 交互 ——
107
108 errc_t run(ChatMessages& messages) override;
109
110
115 errc_t run(ChatMessages& messages, int maxSteps);
116
120 errc_t runOneStep(ChatMessages& messages);
121
122
126 void handleToolCalls(const JsonValue& toolCalls, ChatMessages& messages);
127
130 std::string handleToolCall(const JsonValue& toolCall);
131
132 // —— 流式交互 ——
133 errc_t runStream(ChatMessages& messages, ChatEventHandler& handler) override;
134
135
143 errc_t runStream(ChatMessages& messages, ChatEventHandler& handler, int maxSteps);
144
145
152 errc_t runOneStepStream(ChatMessages& messages, ChatEventHandler& handler);
153
155 const std::string& lastError() const { return lastError_; }
156private:
157 errc_t runOneStep(const ChatMessages& messages, ChatMessage& response);
158
160 JsonValue buildRequestJson(const ChatMessages& messages, bool stream) const;
161
163 errc_t parseResponseMessage(JsonValue& response, ChatMessage& outMessage);
164
165private:
166 std::string systemPrompt_;
167 ChatTools tools_;
168 LLMConfig config_;
169 std::unique_ptr<LLMClient> client_;
170 std::string lastError_;
171 int maxToolIterations_{10};
172};
173
176AST_NAMESPACE_END
聊天智能体
定义 AssistantAgent.hpp:47
const std::string & lastError() const
获取最后一次错误信息
定义 AssistantAgent.hpp:155
ChatTool * addTool(Func func)
添加工具(通过函数指针/lambda)
定义 AssistantAgent.hpp:81
聊天智能体抽象基类
定义 ChatAgent.hpp:40
virtual errc_t run(ChatMessages &messages)=0
执行智能体逻辑
virtual errc_t runStream(ChatMessages &messages, ChatEventHandler &handler)=0
执行智能体逻辑(流式)
流式聊天事件处理器
定义 ChatEventHandler.hpp:42
聊天消息
定义 ChatMessage.hpp:52
聊天消息集合
定义 ChatMessages.hpp:39
AI工具基类
定义 ChatTool.hpp:40
AI工具集合
定义 ChatTools.hpp:39
JSON 值类
定义 JsonValue.hpp:47
大语言模型客户端接口
定义 LLMClient.hpp:39
LLM请求配置
定义 LLMConfig.hpp:39