用于函数调用的OpenAI助手流式传输

问题描述 投票:0回答:1

现在我正在努力如何在我的 NestJS 项目中运行的流式助手中实现函数调用。 如您所知,示例代码是这样的。

https://platform.openai.com/docs/assistants/overview?context=with-streaming

const run = openai.beta.threads.runs.createAndStream(thread.id, {
    assistant_id: assistant.id
  })
    .on('textCreated', (text) => process.stdout.write('\nassistant > '))
    .on('textDelta', (textDelta, snapshot) => process.stdout.write(textDelta.value))
    .on('toolCallCreated', (toolCall) => process.stdout.write(`\nassistant > ${toolCall.type}\n\n`))
    .on('toolCallDelta', (toolCallDelta, snapshot) => {
      if (toolCallDelta.type === 'code_interpreter') {
        if (toolCallDelta.code_interpreter.input) {
          process.stdout.write(toolCallDelta.code_interpreter.input);
        }
        if (toolCallDelta.code_interpreter.outputs) {
          process.stdout.write("\noutput >\n");
          toolCallDelta.code_interpreter.outputs.forEach(output => {
            if (output.type === "logs") {
              process.stdout.write(`\n${output.logs}\n`);
            }
          });
        }
      }
    });

它能够让流媒体工作以进行常规文本响应,但现在我陷入了函数调用。 我想了解 OpenAI 的 Nodejs SDK 的事件处理程序。 有没有人知道这件事?尤其是直播助手的函数调用?

node.js sdk streaming openai-api assistant
1个回答
0
投票

调用的函数只是助手中定义的名称和一些参数。您需要通过检查名称和参数来手动处理该函数,如下所示:

 .on('toolCallDelta', (toolCallDelta, snapshot) => {
      if (toolCallDelta.type === 'function') {
        if (toolCallDelta.function.name === 'getWeather') {
            // process using your custom code and toolCallDelta.function.arguments, then submit the output back to the run
        }
      }
    });
© www.soinside.com 2019 - 2024. All rights reserved.