流式输出
长回答在完成前毫无反馈,会让聊天界面看起来被阻塞。流式调用会在生成时持续发送事件;SDK 负责事件传输和增量响应处理。
- Python
- TypeScript
from agents import Runner
from openai.types.responses import ResponseTextDeltaEvent
from iztro_agents import ChatSession, IztroToolEvent, iztro_ziwei_agent
agent = iztro_ziwei_agent()
session = ChatSession(external_user_id="user_42")
result = Runner.run_streamed(agent, "我出生于1988年2月20日早上6点,女性。请给我一份今年的积极运势展望。", session=session)
async for event in result.stream_events():
if event.type == "raw_response_event" and isinstance(event.data, IztroToolEvent):
print(f"\n🔮 iztro computed: {', '.join(event.data.tools)}\n")
elif event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent):
print(event.data.delta, end="")
import {run} from '@openai/agents';
import {ChatSession, isIztroToolEvent, iztroZiweiAgent} from 'openai-iztro-agents';
const agent = iztroZiweiAgent();
const session = new ChatSession({externalUserId: 'user_42'});
const streamed = await run(agent, '我出生于1988年2月20日早上6点,女性。请给我一份今年的积极运势展望。', {session, stream: true});
for await (const event of streamed) {
if (event.type !== 'raw_model_stream_event') continue;
const data = event.data as unknown;
if (isIztroToolEvent(data)) process.stdout.write(`\n🔮 iztro computed: ${data.tools.join(', ')}\n`);
else if (event.data.type === 'output_text_delta') process.stdout.write(event.data.delta);
}
HTTP 对应接口为 POST /v2/platform/sessions/{session_id}/messages/stream,使用 Server-Sent Events。
真实示例:03_streaming_chat.py
下面直接展示中文或英文的真实流式输出,其中也包含实时到达的 iztro computed 工具事件。
源码:examples/03_streaming_chat.py。
本次运行使用的 Prompt
我出生于1988年2月20日早上6点,女性。请给我一份今年的积极运势展望。
完整真实输出
正在加载真实输出…