Skip to content

场景与事件

场景 Scene

场景用于标记Span事件发生的位置,一般定义是某个TFRobot基础类,比如Robot/Brain/Chain/LLM等。

目前支持的场景有:["Robot", "Brain", "Drive", "Memory", "MemoryStore", "Chain", "Tool", "LLM"] 相关定义如下:

class BaseEventContext(BaseModel):
    scene: Literal["Robot", "Brain", "Drive", "Memory", "MemoryStore", "Chain", "Tool", "LLM"]
    entity_id: str  # 发送事件的实体ID
    desc: Optional[str] = None  # 发送事件的描述信息。Desc往往与scene+action有关,并非具体内容,旨在帮助程序员了解信息而非用户
    info: str  # 事件的详细信息,一般可以用于打印日志,旨在帮助用户了解具体信息而非程序员,每个事件的info都不同

Robot

记录发生在Robot内的相关事件,目前主要记录Robot run 与 async_run 运行前后的状态。

Brain

记录发生在Brain内的相关事件,目前主要记录Brain run 与 async_run 运行前后的状态。

Drive

当前尚未记录,预留此场景,未来会按需开发对应的记录。

事件 Event

事件是指OpenTelemetry的Span的类型,比如 BEFORE_ROBOT_RUN 表示在Robot运行之前,AFTER_ROBOT_RUN 表示在Robot运行之后。

目前TFRobot已经实现的场景枚举如下:

class SpanEvent(Enum):
    BEFORE_ROBOT_RUN = "before_robot_run"
    AFTER_ROBOT_RUN = "after_robot_run"
    BEFORE_BRAIN_RUN = "before_brain_run"
    AFTER_BRAIN_RUN = "after_brain_run"
    BEFORE_CHAIN_RUN = "before_chain_run"
    AFTER_CHAIN_RUN = "after_chain_run"
    BEFORE_LLM_GENERATE = "before_llm_generate"
    AFTER_LLM_GENERATE = "after_llm_generate"
    BEFORE_LLM_STREAMING = "before_llm_streaming"
    LLM_STREAMING = "llm_streaming"
    AFTER_LLM_STREAMING = "after_llm_streaming"
    BEFORE_TOOL_RUN = "before_tool_run"
    AFTER_TOOL_RUN = "after_tool_run"
    BEFORE_MEMORY_RECALL = "before_memory_recall"
    AFTER_MEMORY_RECALL = "after_memory_recall"
    BEFORE_MEMORY_REFRESH = "before_memory_refresh"
    AFTER_MEMORY_REFRESH = "after_memory_refresh"
    BEFORE_MEMORY_ENRICH = "before_memory_enrich"
    AFTER_MEMORY_ENRICH = "after_memory_enrich"
    BEFORE_MEMORY_STORE_GET = "before_memory_store_get"
    AFTER_MEMORY_STORE_GET = "after_memory_store_get"
    BEFORE_MEMORY_STORE_ADD = "before_memory_store_add"
    AFTER_MEMORY_STORE_ADD = "after_memory_store_add"
    BEFORE_MEMORY_STORE_DELETE = "before_memory_store_delete"
    AFTER_MEMORY_STORE_DELETE = "after_memory_store_delete"
    BEFORE_MEMORY_STORE_SERIALIZATION = "before_memory_store_serialization"
    AFTER_MEMORY_STORE_SERIALIZATION = "after_memory_store_serialization"
    BEFORE_MEMORY_STORE_CLEAR = "before_memory_store_clear"
    AFTER_MEMORY_STORE_CLEAR = "after_memory_store_clear"

Notes: 如果用户需要扩展自己的事件,只需要在Span事件相应的函数内自行添加字符串表达即可,不需要修改此枚举类。不过一般情况下用户不需要扩展事件。而且扩展 事件虽然不需要修改此枚举,但如果要实现严格的监控,需要扩展的点会比较多。详情参考 event_extension.md

BEFORE_ROTOT_RUN

此场景记录Robot-run方法调用前的上下文内容。