Skip to content

Brain 基础模块文档

Brain Base Module Documentation

本模块定义了 TFRobot Brain 组件的基础类,Brain 组件负责管理思维链和记忆。 This module defines the base classes for the Brain component of TFRobot, which is responsible for managing thought chains and memory.

BaseBrain 类

BaseBrain Class

BaseBrain 是一个抽象基类,概述了所有 Brain 实现的核心功能。它主要处理思维链的编排和记忆交互。 BaseBrain is an abstract base class that outlines the core functionalities for all brain implementations. It primarily deals with the orchestration of thought chains and memory interaction.

Bases: TFNeuralModel, ABC

BaseBrain 主要是对思维链与记忆交织的管理

run abstractmethod

run(current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None) -> AssistantTextMessage

Complete chat | 生成聊天结果

Parameters:

Name Type Description Default
current_input BaseMessage

current input | 当前输入

required
tools Optional[list[BaseTool]]

Available tool list | 可用的工具列表

None

Returns:

Name Type Description
BaseMessage AssistantTextMessage

The result of completion | 完成的结果

Source code in tfrobot/brain/base.py
103
104
105
106
107
108
109
110
111
112
113
114
115
@abstractmethod
def run(self, current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None) -> AssistantTextMessage:
    """
    Complete chat | 生成聊天结果

    Args:
        current_input (BaseMessage): current input | 当前输入
        tools (Optional[list[BaseTool]]): Available tool list | 可用的工具列表

    Returns:
        BaseMessage: The result of completion | 完成的结果
    """
    raise NotImplementedError("Brain run method is not implemented")

async_run abstractmethod async

async_run(current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None) -> AssistantTextMessage

Complete chat | 生成聊天结果

Parameters:

Name Type Description Default
current_input UserAndAssMsg

current input | 当前输入

required
tools Optional[list[BaseTool]]

Available tool list | 可用的工具列表

None

Returns:

Name Type Description
UserAndAssMsg AssistantTextMessage

The result of completion | 完成的结果

Source code in tfrobot/brain/base.py
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
@abstractmethod
async def async_run(
    self, current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None
) -> AssistantTextMessage:
    """
    Complete chat | 生成聊天结果

    Args:
        current_input (UserAndAssMsg): current input | 当前输入
        tools (Optional[list[BaseTool]]): Available tool list | 可用的工具列表

    Returns:
        UserAndAssMsg: The result of completion | 完成的结果
    """
    raise NotImplementedError("Brain async_run method is not implemented")

commit_message abstractmethod

commit_message(msg: UserAndAssMsg) -> None

Commit message | 提交消息

Parameters:

Name Type Description Default
msg UserAndAssMsg

The message to commit | 要提交的消息

required
Source code in tfrobot/brain/base.py
133
134
135
136
137
138
139
140
141
@abstractmethod
def commit_message(self, msg: UserAndAssMsg) -> None:
    """
    Commit message | 提交消息

    Args:
        msg (UserAndAssMsg): The message to commit | 要提交的消息
    """
    raise NotImplementedError("Brain commit_message method is not implemented")

async_commit_message abstractmethod async

async_commit_message(msg: UserAndAssMsg) -> None

Commit message | 提交消息

Parameters:

Name Type Description Default
msg UserAndAssMsg

The message to commit | 要提交的消息

required
Source code in tfrobot/brain/base.py
143
144
145
146
147
148
149
150
151
@abstractmethod
async def async_commit_message(self, msg: UserAndAssMsg) -> None:
    """
    Commit message | 提交消息

    Args:
        msg (UserAndAssMsg): The message to commit | 要提交的消息
    """
    raise NotImplementedError("Brain async_commit_message method is not implemented")

connect_to_neural abstractmethod

connect_to_neural(neural: Neural) -> None

实现NeuralProtocol协议,向Neural注册自己

Parameters:

Name Type Description Default
neural Neural

Neural实例

required

Returns:

Type Description
None

None

Source code in tfrobot/brain/base.py
153
154
155
156
157
158
159
160
161
162
163
164
@abstractmethod
def connect_to_neural(self, neural: Neural) -> None:
    """
    实现NeuralProtocol协议,向Neural注册自己

    Args:
        neural(Neural): Neural实例

    Returns:
        None
    """
    raise NotImplementedError("Brain connect_to_neural method is not implemented")

disconnect_from_neural abstractmethod

disconnect_from_neural(neural: Neural) -> None

实现NeuralProtocol协议,从Neural注销自己

Parameters:

Name Type Description Default
neural Neural

Neural实例

required

Returns:

Type Description
None

None

Source code in tfrobot/brain/base.py
166
167
168
169
170
171
172
173
174
175
176
177
@abstractmethod
def disconnect_from_neural(self, neural: Neural) -> None:
    """
    实现NeuralProtocol协议,从Neural注销自己

    Args:
        neural(Neural): Neural实例

    Returns:
        None
    """
    raise NotImplementedError("Brain disconnect_from_neural method is not implemented")

Brain 类

Brain Class

Brain 类是 BaseBrain 的一个具体实现。它管理思维链(Chain)和记忆(BaseMemory)之间的交互,以处理输入并生成响应。 The Brain class is a concrete implementation of BaseBrain. It manages the interplay between thought chains (Chain) and memory (BaseMemory) to process inputs and generate responses.

Bases: BaseBrain

Brain 主要是对思维链与记忆交织的管理

Attributes:

Name Type Description
chain(Chain | Chains

链列表,会串行调用

run

run(current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None) -> AssistantTextMessage

Complete chat | 生成聊天结果

Parameters:

Name Type Description Default
current_input BaseMessage

current input | 当前输入

required
tools Optional[list[BaseTool]]

Available tool list | 可用的工具列表

None

Returns:

Name Type Description
BaseMessage AssistantTextMessage

The result of completion | 完成的结果

Source code in tfrobot/brain/base.py
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
def run(self, current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None) -> AssistantTextMessage:
    """
    Complete chat | 生成聊天结果

    Args:
        current_input (BaseMessage): current input | 当前输入
        tools (Optional[list[BaseTool]]): Available tool list | 可用的工具列表

    Returns:
        BaseMessage: The result of completion | 完成的结果
    """
    # 收到消息后立即将消息存入记忆
    self.commit_message(current_input)
    conversation, elements, knowledge = self.memory.recall(
        current_input=current_input, chunk_size=self.memory_chunk_size, length_function=cl100k_base_length
    )
    res = self.chain.run(
        current_input=current_input,
        conversation=cast(list[BaseMessage], conversation),
        elements=elements,
        knowledge=knowledge,
        tools=tools,
        intermediate_msgs=[],
    )
    res_msg = res.to_message()
    # 将res_msg设置到与current_input相关的上下文中
    res_msg.conversation_id = current_input.conversation_id
    # 获取当前会话中最新消息ID,将最新消息ID设置为res_msg的parent_id上
    if current_input.conversation_id:
        last_msg = self.memory.get_latest_msg_from_conversation(current_input.conversation_id)
        if last_msg and last_msg.additional_kwargs:
            cast(dict, res_msg.additional_kwargs)[MSG_PARENT_UUID] = last_msg.additional_kwargs.get(
                MSG_ELEMENT_UUID
            )
    # 在完成问答后将输出存入记忆
    self.commit_message(res_msg)
    return res_msg

commit_message

commit_message(msg: UserAndAssMsg) -> None

Commit message | 提交消息

Parameters:

Name Type Description Default
msg UserAndAssMsg

The message to commit | 要提交的消息

required
Source code in tfrobot/brain/base.py
244
245
246
247
248
249
250
251
def commit_message(self, msg: UserAndAssMsg) -> None:
    """
    Commit message | 提交消息

    Args:
        msg (UserAndAssMsg): The message to commit | 要提交的消息
    """
    self.memory.commit(msg)

async_commit_message async

async_commit_message(msg: UserAndAssMsg) -> None

Commit message | 提交消息

Parameters:

Name Type Description Default
msg UserAndAssMsg

The message to commit | 要提交的消息

required
Source code in tfrobot/brain/base.py
253
254
255
256
257
258
259
260
async def async_commit_message(self, msg: UserAndAssMsg) -> None:
    """
    Commit message | 提交消息

    Args:
        msg (UserAndAssMsg): The message to commit | 要提交的消息
    """
    self.memory.commit(msg)

async_run async

async_run(current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None) -> AssistantTextMessage

Complete chat | 生成聊天结果

Parameters:

Name Type Description Default
current_input UserAndAssMsg

current input | 当前输入

required
tools Optional[list[BaseTool]]

Available tool list | 可用的工具列表

None

Returns:

Name Type Description
UserAndAssMsg AssistantTextMessage

The result of completion | 完成的结果

Source code in tfrobot/brain/base.py
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
async def async_run(
    self, current_input: UserAndAssMsg, tools: Optional[list[BaseTool]] = None
) -> AssistantTextMessage:
    """
    Complete chat | 生成聊天结果

    Args:
        current_input (UserAndAssMsg): current input | 当前输入
        tools (Optional[list[BaseTool]]): Available tool list | 可用的工具列表

    Returns:
        UserAndAssMsg: The result of completion | 完成的结果
    """
    # 收到消息后立即将消息存入记忆
    await self.async_commit_message(current_input)
    conversation, elements, knowledge = await self.memory.async_recall(
        current_input=current_input, chunk_size=self.memory_chunk_size, length_function=cl100k_base_length
    )
    res = await self.chain.async_run(
        current_input=current_input,
        conversation=cast(list[BaseMessage], conversation),
        elements=elements,
        knowledge=knowledge,
        tools=tools,
        intermediate_msgs=[],
    )
    res_msg = res.to_message()
    # 将res_msg设置到与current_input相关的上下文中
    res_msg.conversation_id = current_input.conversation_id
    # 获取当前会话中最新消息ID,将最新消息ID设置为res_msg的parent_id上
    if current_input.conversation_id:
        last_msg = await self.memory.aget_latest_msg_from_conversation(current_input.conversation_id)
        if last_msg:
            cast(dict, res_msg.additional_kwargs)[MSG_PARENT_UUID] = cast(dict, last_msg.additional_kwargs)[
                MSG_ELEMENT_UUID
            ]
    # 在完成问答后将输出存入记忆
    await self.async_commit_message(res_msg)
    return res_msg

connect_to_neural

connect_to_neural(neural: Neural) -> None

实现NeuralProtocol协议,向Neural注册自己

Parameters:

Name Type Description Default
neural Neural

Neural实例

required

Returns:

Type Description
None

None

Source code in tfrobot/brain/base.py
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
def connect_to_neural(self, neural: Neural) -> None:
    """
    实现NeuralProtocol协议,向Neural注册自己

    Args:
        neural(Neural): Neural实例

    Returns:
        None
    """
    if self._neural and self._neural is not neural:
        raise ValueError("The neural is already registered by another neural.")
    self._neural = neural
    self._neural.register(self.chain)
    self._neural.register(self.memory)

disconnect_from_neural

disconnect_from_neural(neural: Neural) -> None

实现NeuralProtocol协议,从Neural注销自己

Parameters:

Name Type Description Default
neural Neural

Neural实例

required

Returns:

Type Description
None

None

Source code in tfrobot/brain/base.py
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
def disconnect_from_neural(self, neural: Neural) -> None:
    """
    实现NeuralProtocol协议,从Neural注销自己

    Args:
        neural(Neural): Neural实例

    Returns:
        None
    """
    if self._neural is not neural:  # pragma: no cover
        raise ValueError("The neural is not the same as the registered neural.")  # pragma: no cover
    self._neural.unregister(self.chain)
    self._neural.unregister(self.memory)
    self._neural = None  # pragma: no cover