Azure OpenAI Phi-4多模态模型调用runTools()工具选择报错咨询
问题描述
将Azure AI服务的Next.js应用中的模型从GPT-4o切换为Phi-4-multimodel-instruct后,原本运行正常的runTools()方法调用时出现以下错误:
BadRequestError: 400 {"object":"error","message":""auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set","type":"BadRequestError","param":null,"code":400}
实现代码
OpenAI实例配置
import { AzureOpenAI } from "openai"; export const OpenAIInstance = () => { try { if ( !process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_API_KEY || !process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_API_VERSION || !process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_INSTANCE_NAME ) { throw new Error( "Missing required environment variables for OpenAI instance." ); } const azureOpenAI = new AzureOpenAI({ apiKey: process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_API_KEY, apiVersion: process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_API_VERSION, baseURL: `https://${process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_INSTANCE_NAME}.openai.azure.com/models/chat/completions?api-version=${process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_API_VERSION}` }); return azureOpenAI; } catch (error) { console.error( "Error initializing OpenAI instance:", (error as Error).message ); throw error; } };
Chat API扩展实现
export const ChatApiExtensions = async (props: { chatThread: ChatThreadModel; userMessage: string; history: ChatCompletionMessageParam[]; extensions: RunnableToolFunction<any>[]; signal: AbortSignal; }): Promise<ChatCompletionStreamingRunner> => { const { userMessage, history, signal, chatThread, extensions } = props; const openAI = OpenAIInstance(); const model = process.env.AZURE_SERVICE_PHI_4_MULTIMODEL_MODEL_NAME; if (!model) { throw new Error("Model deployment name is not configured"); } const systemMessage = await extensionsSystemMessage(chatThread); try { return await openAI.beta.chat.completions.runTools( { model: model, stream: true, messages: [ { role: "system", content: chatThread.personaMessage + "\n" + systemMessage, }, ...history, { role: "user", content: userMessage, }, ], tools: extensions, temperature: 0.7, max_tokens: 4000, }, { signal: signal, } ); } catch (error) { console.error("Error in ChatApiExtensions:", error); throw error; } };
疑问
根据错误提示,Phi-4-multimodel-instruct需要GPT-4o不需要的工具调用额外参数,但查阅Azure文档未找到--enable-auto-tool-choice和--tool-call-parser这两个标识的具体信息。有没有人在Azure上成功为Phi-4-multimodel-instruct配置工具调用?该如何修改代码解决此问题?
环境
- Next.js(服务端组件)
- Azure OpenAI服务
- OpenAI Node.js SDK
内容的提问来源于stack exchange,提问作者Junaid Nazir
相关产品推荐
相关产品推荐

