多模态与 Embeddings
图片理解(qwen3.7-flash 实测)、图片生成和 Embeddings 的现状。
图片理解
在 messages[].content 里使用数组,同时放文本和图片。图片使用公网 URL(实测通过);Base64 形式的 data: URL 是 OpenAI 格式的标准写法,本站尚未单独实测。
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 形如 ,需要自己解码保存。图片模型的费用请先在 模型广场 确认。
这是实测可用但未做长期保证的用法,模型可用性会随上游变化。视频生成类模型(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,这里会补充示例。