llm
feishu.agent.llm
¶
TextPart
dataclass
¶
ToolUsePart
dataclass
¶
模型发起的一次工具调用,作为助手消息的一个内容块。
arguments 为已解析的参数字典;与 feishu.agent.llm.ToolCall 不同,此处的参数已经是 dict,
而非待解析的 JSON 字符串。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
ToolResultPart
dataclass
¶
工具执行结果,作为工具消息(role="tool")的内容块回传给模型。
tool_call_id 须与触发执行的 feishu.agent.llm.ToolUsePart 的 id 对应。当工具执行失败时,
将 is_error 置为 True,模型即可据此调整后续行为。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
Message
dataclass
¶
一条对话消息,由角色与若干内容块组成。
role 取 user、assistant 或 tool 之一;content 是 [feishu.agent.llm.ContentPart][] 列表,
适配器会将其翻译为各家大模型 API 的消息格式。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
ToolSpec
dataclass
¶
工具的与厂商无关的声明,供模型据此决定是否调用。
input_schema 为描述参数的 JSON Schema。适配器会将其翻译为各家大模型所需的工具格式
(Anthropic 的 input_schema、OpenAI 的 function.parameters)。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
StopReason
¶
归一化后的模型停止原因。
各适配器会将厂商返回的原始停止原因映射到这些枚举值。由于继承自 str,枚举成员可直接与对应的
字符串字面量比较,便于序列化与传输。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
TextDelta
dataclass
¶
ToolCallDelta
dataclass
¶
流式响应中的一个工具调用增量片段。
同一次工具调用的多个片段共享相同的 index;id 与 name 通常仅在首个片段出现,而 arguments
会逐段累积成完整的参数 JSON 字符串。feishu.agent.loop.accumulate_stream 负责按 index 归并这些片段。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
MessageStop
dataclass
¶
流式响应的终止信号,携带停止原因与可选的用量统计。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
ToolCall
dataclass
¶
由流式片段归并而成的完整工具调用。
与 feishu.agent.llm.ToolUsePart 不同,此处的 arguments 为完整的 JSON 字符串,由
feishu.agent.loop.Agent 在分发前 json.loads() 解析。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
LlmBackend
¶
Bases: Protocol
大模型后端协议,是自定义模型后端的扩展契约。
实现该协议即可接入 feishu.agent.loop.Agent;内置实现见 feishu.agent.adapters.anthropic.AnthropicBackend
与 feishu.agent.adapters.openai.OpenAIBackend。stream 须返回逐个产出 [feishu.agent.llm.StreamChunk][]
的异步迭代器。该协议标注了 runtime_checkable,可用 isinstance 校验实现是否符合契约。
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/agent/llm.py
stream
¶
stream(*, messages: Sequence[Message], tools: Sequence[ToolSpec] = (), system: str | None = None, **kwargs: Any) -> AsyncIterator[StreamChunk]
以流式方式生成一轮模型响应。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Sequence[Message]
|
截至当前轮次的对话历史。 |
必需 |
|
Sequence[ToolSpec]
|
本轮可供模型调用的工具声明。 |
()
|
|
str | None
|
系统提示词。 |
None
|
|
Any
|
透传给底层大模型 API 的额外参数。 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
AsyncIterator[StreamChunk]
|
逐个产出 [feishu.agent.llm.StreamChunk][] 的异步迭代器。 |