开发接入

多模态与 Embeddings

图片理解(qwen3.7-flash 实测)、图片生成和 Embeddings 的现状。

图片理解

在 messages[].content 里使用数组,同时放文本和图片。图片使用公网 URL(实测通过);Base64 形式的 data: URL 是 OpenAI 格式的标准写法,本站尚未单独实测。

examples/python/vision.py
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ATHANDRA_API_KEY"],
    base_url="https://ai.athandra.com/v1",
)

resp = client.chat.completions.create(
    model=os.environ.get("ATHANDRA_VISION_MODEL", "qwen3.7-flash"),
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "用一句话描述这张图片"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://athandra-public-assets.oss-ap-southeast-1.aliyuncs.com/brand/athandra-logo-v1.png"
                    },
                },
            ],
        }
    ],
    # enable_thinking 是千问模型的参数,关闭思考可节省 token;其它模型请去掉
    extra_body={"enable_thinking": False},
)

print(resp.choices[0].message.content)

实测 qwen3.7-flash 可正确识别图片内容,返回的 usage.prompt_tokens_details.image_tokens 会显示图片消耗的 token。

关闭思考省 token

千问系列默认会先思考,复杂度很低的图片问题也可能消耗上千 token。示例里的 enable_thinking: false 是千问模型的专用参数,可以关闭思考;用其它模型请去掉这个参数。

其它模型是否支持图片输入以模型本身能力为准,本文只确认了 qwen3.7-flash。

图片生成

图片生成目前没有可用的 OpenAI 格式接口:

  • POST /v1/images/generations 配 gpt-image-2,实测返回 401(上游服务拒绝,错误信息是 Access denied due to invalid subscription key or wrong API endpoint)。
  • 配 gemini-2.5-flash-image 走 /v1/images/generations,实测返回 500(not supported model for image generation, only imagen models are supported)。

所以本文档的 API 参考 不收录 Images 接口。唯一实测可用的方式是 official 分组的令牌,用 Chat Completions 调用 Gemini 图片模型,图片以 Markdown 形式的 Base64 data: URL 返回在 content 里:

curl -sS https://ai.athandra.com/v1/chat/completions \
  -H "Authorization: Bearer $ATHANDRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-flash-image",
    "messages": [{"role": "user", "content": "draw a small red circle on white background"}],
    "max_tokens": 300
  }'

返回的 choices[0].message.content 形如 ![image](data:image/png;base64,iVBORw0KGgo...),需要自己解码保存。图片模型的费用请先在 模型广场 确认。

这是实测可用但未做长期保证的用法,模型可用性会随上游变化。视频生成类模型(seedance-*)的调用方式与对话模型不同,本文档暂未实测收录,请先不要按对话接口的方式调用。

Embeddings

截至目前,在 default 与 official 分组的模型列表里没有向量(Embedding)模型,用 text-embedding-3-small 实测返回 model_not_found:

{
  "error": {
    "code": "model_not_found",
    "message": "分组 default 下模型 text-embedding-3-small 无可用渠道(distributor) (request id: ...)"
  }
}

(示例省略了 type 字段。)如果你的业务依赖 Embeddings,请先联系平台管理员确认是否已开通;开通后接口路径为 POST /v1/embeddings,这里会补充示例。

本页目录