多轮会话和流式输入¶
本主题介绍向 Cortex Code Agent SDK 发送提示的主要方法:单提示查询**用于您希望 ``query()`` 为您管理会话生命周期时,**流式输入 用于增量提示传递,多轮会话 用于交互式对话,可在多次交互之间维护上下文。
输入模式¶
SDK 提供三种输入模式:
模式 |
何时使用 |
API |
|---|---|---|
单提示输入 |
使用 |
TypeScript 和 Python 中的 |
流式输入 |
通过异步可迭代对象而不是单个提示字符串,以增量方式发送用户消息 |
TypeScript 和 Python 中的 |
多轮会话 |
交互式对话:发送多个提示、维护上下文、控制会话生命周期 |
|
单提示查询¶
query() 函数是使用 SDK 的最简单方式。它可以发送单个提示字符串或 SDK 用户消息的异步可迭代对象,且会流回事件,直到代理生成 ResultMessage。在此模式下,“单提示”是指输入模式:输出仍正常流式传输。
query() 函数会为您管理整个会话生命周期:它会创建会话、发送提示、生成事件,并在结果达成或迭代器耗尽时关闭会话。
这与 maxTurns/max_turns 不同。单提示查询仍允许代理在您配置的轮次上限内,根据需要进行任意数量的内部轮次。设置 maxTurns: 1 或 max_turns=1 是一个独立的约束条件,它将代理限制为仅进行一个轮次,并且可以生成 error_max_turns 结果。
多轮会话¶
对于需要多次交互的对话,请使用会话。代理会保留轮次之间的上下文,因此后面的提示可以引用先前轮次中读取的文件、执行的分析和讨论的主题。
会话生命周期¶
调用
createCortexCodeSession(options)启动会话。这会启动 CLI 进程。调用
session.send(prompt)发送用户消息。迭代
session.stream()接收响应。看到result事件时停止迭代。重复步骤 2 至 3 以进行其他轮次。
调用
session.close()结束会话并清理进程。
创建
CortexCodeSDKClient并调用connect()``(或使用 ``async with)。调用
client.query(prompt)发送用户消息。迭代
client.receive_response()接收消息,直到包括ResultMessage。重复步骤 2 至 3 以进行其他轮次。
调用
client.disconnect()``(或者让 ``async with阻止退出)。
继续上一个会话¶
您可以恢复上一个会话中的对话。代理会加载之前的对话历史记录,并从中断处继续。
您还可以按 ID 恢复特定会话:
创建会话分支¶
创建分支会创建一个新会话,该会话从现有会话的完整对话历史记录开始。不会修改原始会话。这对于在不丢失原始对话的情况下探索替代方法非常有用。
中断轮次¶
您的应用程序可以在代理处理轮次时请求中断。这与在 CLI 中按 Esc 具有相同的效果。会话保持活动状态,以供后续提示使用。
直接中断调用¶
调用 interrupt() 方法直接发送中断请求:
中止控制器/中止事件¶
您还可以在会话创建时传递中止信号。当信号触发时,SDK 会自动发送相同的中断请求。
备注
在 TypeScript 中,传递 AbortController,其 abort() 方法会触发中断请求。在 Python 中,传递 asyncio.Event,其 set() 方法会触发中断请求。在这两种情况下,会话在中断后仍保持活动状态。
法律声明¶
如果 Cortex Code 配置使用 模型和服务直通条款 中提供的模型,则您对该模型的使用将进一步受该页面上该模型的条款的约束。
输入和输出的 Data Classification 如下表所示。
输入 Data Classification |
输出 Data Classification |
名称 |
|---|---|---|
Usage Data |
客户数据 |
涵盖的 AI 功能 [1] |
有关更多信息,请参阅 Snowflake AI 和 ML。