You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure OpenAI Java SDK(1.0.0-beta.9)图片ChatCompletion调用异常求助

Azure OpenAI Java SDK 图片ChatCompletion上下文长度超限问题解决方案

你的代码实现本身是可行的,出现上下文长度超限的核心原因是直接将图片的base64编码内容嵌入请求中,导致token计算量剧增。Azure OpenAI会将base64字符串的每一段字符都计入token总量,大尺寸图片的base64编码会轻松突破模型的token上限,而其他第三方库(如kotlin-openai)可能默认采用了外部图片URL的方式传递图片,避免了这个问题。

以下是具体解决方案:

  • 改用外部图片URL传递(推荐)
    将图片上传至可公开访问的存储服务(如Azure Blob Storage),生成带访问权限的URL(如SAS URL),用该URL替代base64编码内容。此时模型仅计算URL本身的token数量,不会触发超限。修改后的代码示例:

    val cco = ChatCompletionsOptions(
        mutableListOf(
            ChatRequestSystemMessage("You are an assistant which does Optical Character Recognition on scanned medical documents."),
            ChatRequestUserMessage(mutableListOf<ChatMessageContentItem>(
                ChatMessageTextContentItem("Read text from the scanned medical document. Only respond with the text content."),
                ChatMessageImageContentItem(ChatMessageImageUrl("https://your-storage-account.blob.core.windows.net/container/medical-scan.png?your-sas-token"))
            ))
        )
    )
    
  • 压缩图片以减少base64长度(仅当必须用base64时)
    对图片进行分辨率压缩、质量优化,缩小图片文件体积后再进行base64编码。比如将图片调整至模型推荐的尺寸(如GPT-4V支持的最大分辨率内),使用图片压缩工具降低质量,从而减少base64字符串的长度,降低token消耗。

  • 检查SDK版本兼容性
    虽然你使用的1.0.0-beta.9版本支持图片输入,但可尝试升级至最新的beta版本,排查是否存在token计算逻辑的bug或优化点。

内容的提问来源于stack exchange,提问作者user20130987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:57:13