以下是我对这两个输出模式的理解:

        stream比起stream_event更加的原始,他就像一条流水线,不断输出消息对象,你需要对每一个对象进行判断,判断他的type(如messages,updates),在判断他token的type(如messages中的reasoning,或text),然后在输出,你过滤完的对象的值。

        值得一提的是他其中的stream_mode就是在这个流水线的出口处加了第一层的过滤,只允许规定类型的对象流出来,当然如果你是多模式的你还是要进行两次判断区分你想要的消息,但如果你是但模式(及你只允许一种类型流出),你就可以省略第一次的判断

        其次就是stream_event,他的底层依旧是stream,但他与stream的区别主要在于,他不是一条流水线,而是给你分好了几种流水线,将他们封装成了类似于事件的类,你需要哪个流水线就用for循环监听这个事件就行(就如messages,你就直接监听for message in run.messages),当然第二次判断还是需要的(如messages中的reasoning,或text)

        stream_event中也有stream_mode,这里的作用和stream()中的类似,但这里是过滤事件

        ·总的来说,stream更加的原始,从中获取数据需要一次循环(一个流水线),两次判断。stream_event相对高级点,有封装好的“事件”(多条流水线),从中获取数据需要两次循环,一次判断

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐