问题:
在调用多模态大模型时报错: Exception: 400 - {"request_id":"xxx","code":"InvalidParameter","message":"url error, please check url! For details, see: help.aliyun.com/zh/model-st…
根据官方文档设置multiModel并更新SDK仍无法解决
原因:
虽然启用了 multiModel 选项,但底层 DashScopeApi 默认仍使用普通文本模型的请求路径(如 /v1/chat/completions),而多模态模型需使用专用端点 /api/v1/services/aigc/multimodal-generation/generation。
解决办法:
对于多模态模型,在ChatModel的dashScopeApi额外设置一条参数:
@Bean("imageAgent")
public ReactAgent imageAgent() {
ChatModel chatModel = DashScopeChatModel.builder()
.dashScopeApi(DashScopeApi.builder()
.apiKey(System.getenv("AI_DASHSCOPE_API_KEY"))
// 额外设置专用端点
.completionsPath("/api/v1/services/aigc/multimodal-generation/generation")
.build())
.defaultOptions(DashScopeChatOptions.builder()
.multiModel(true)
.model(model)
.build())
.build();
return ReactAgent.builder()
.name("xxx")
.model(chatModel)
.saver(redisSaver)
.instruction("You are a helpful assistant.")
.build();
}
即可正常使用:
@GetMapping(value = "/memory/chat/image")
@Operation(summary = "memory/chat/image")
public String doChatImage(@RequestParam(name = "question", defaultValue = "描述这个图片") String question,
@RequestParam String memoryId) throws Exception{
RunnableConfig config = RunnableConfig.builder()
.threadId(memoryId)
.build();
URI uri = URI.create("https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg");
UserMessage userMessage = UserMessage.builder()
.media(Media.builder()
.mimeType(MimeTypeUtils.IMAGE_JPEG)
.data(uri)
.build())
.text(question)
.build();
return imageAgent.call(userMessage, config).getText();
}
解决方法来源:github.com/alibaba/spr…