[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-nav-zh":3,"docs-zh-models\u002Fchat\u002Fmultimodal":163},[4,52,69,92,142,155,159],{"title":5,"path":6,"stem":7,"children":8,"page":-1},"快速开始","\u002Fgetting-started","1.getting-started",[9,12,30,44,48],{"title":10,"path":6,"stem":11},"关于 SilvaMux","1.getting-started\u002Findex",{"title":13,"path":14,"stem":15,"children":16,"page":-1},"首次调用千木 API","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F1.quick-start\u002Findex",[17,18,22,26],{"title":13,"path":14,"stem":15},{"title":19,"path":20,"stem":21},"项目和账户设置","\u002Fgetting-started\u002Fquick-start\u002Fproject-and-account","1.getting-started\u002F1.quick-start\u002F2.project-and-account",{"title":23,"path":24,"stem":25},"获取 API Key","\u002Fgetting-started\u002Fquick-start\u002Fapi-key","1.getting-started\u002F1.quick-start\u002F3.api-key",{"title":27,"path":28,"stem":29},"第一个请求","\u002Fgetting-started\u002Fquick-start\u002Ffirst-request","1.getting-started\u002F1.quick-start\u002F4.first-request",{"title":31,"path":32,"stem":33,"children":34,"page":43},"模型与体验","\u002Fgetting-started\u002Fmodels-and-experience","1.getting-started\u002F2.models-and-experience",[35,39],{"title":36,"path":37,"stem":38},"模型选择","\u002Fgetting-started\u002Fmodels-and-experience\u002Fmodel-selection","1.getting-started\u002F2.models-and-experience\u002F1.model-selection",{"title":40,"path":41,"stem":42},"在线体验","\u002Fgetting-started\u002Fmodels-and-experience\u002Fplayground","1.getting-started\u002F2.models-and-experience\u002F2.playground",false,{"title":45,"path":46,"stem":47},"限流","\u002Fgetting-started\u002Frate-limits","1.getting-started\u002F3.rate-limits",{"title":49,"path":50,"stem":51},"常见问题","\u002Fgetting-started\u002Ffaq","1.getting-started\u002F4.faq",{"title":53,"path":54,"stem":55,"children":56,"page":43},"产品计费","\u002Fbilling","2.billing",[57,61,65],{"title":58,"path":59,"stem":60},"计费说明","\u002Fbilling\u002Foverview","2.billing\u002F1.overview",{"title":62,"path":63,"stem":64},"在线充值","\u002Fbilling\u002Frecharge","2.billing\u002F2.recharge",{"title":66,"path":67,"stem":68},"账单、用量与导出","\u002Fbilling\u002Fusage-export","2.billing\u002F3.usage-export",{"title":70,"path":71,"stem":72,"children":73,"page":43},"Coding Plan","\u002Fcoding-plan","3.coding-plan",[74,78],{"title":75,"path":76,"stem":77},"Coding Plan 概述","\u002Fcoding-plan\u002Foverview","3.coding-plan\u002F1.overview",{"title":79,"path":80,"stem":81,"children":82,"page":-1},"个人版","\u002Fcoding-plan\u002Fpersonal","3.coding-plan\u002F2.personal\u002Findex",[83,85,89],{"title":84,"path":80,"stem":81},"价格和权益",{"title":86,"path":87,"stem":88},"快速接入","\u002Fcoding-plan\u002Fpersonal\u002Fquick-start","3.coding-plan\u002F2.personal\u002F2.quick-start",{"title":49,"path":90,"stem":91},"\u002Fcoding-plan\u002Fpersonal\u002Ffaq","3.coding-plan\u002F2.personal\u002F3.faq",{"title":93,"path":94,"stem":95,"children":96,"page":43},"模型接口","\u002Fmodels","4.models",[97,130],{"title":98,"path":99,"stem":100,"children":101,"page":43},"文本生成","\u002Fmodels\u002Fchat","4.models\u002F1.chat",[102,106,110,114,118,122,126],{"title":103,"path":104,"stem":105},"概述","\u002Fmodels\u002Fchat\u002Foverview","4.models\u002F1.chat\u002F1.overview",{"title":107,"path":108,"stem":109},"OpenAI 兼容接口","\u002Fmodels\u002Fchat\u002Fopenai","4.models\u002F1.chat\u002F2.openai",{"title":111,"path":112,"stem":113},"Anthropic 兼容","\u002Fmodels\u002Fchat\u002Fanthropic","4.models\u002F1.chat\u002F3.anthropic",{"title":115,"path":116,"stem":117},"Volcengine 兼容","\u002Fmodels\u002Fchat\u002Fvolcengine","4.models\u002F1.chat\u002F4.volcengine",{"title":119,"path":120,"stem":121},"智谱兼容","\u002Fmodels\u002Fchat\u002Fzhipu","4.models\u002F1.chat\u002F5.zhipu",{"title":123,"path":124,"stem":125},"SilvaMux 统一入口","\u002Fmodels\u002Fchat\u002Funified","4.models\u002F1.chat\u002F6.unified",{"title":127,"path":128,"stem":129},"多模态输入","\u002Fmodels\u002Fchat\u002Fmultimodal","4.models\u002F1.chat\u002F7.multimodal",{"title":131,"path":132,"stem":133,"children":134,"page":43},"图片生成","\u002Fmodels\u002Fimages","4.models\u002F2.images",[135,138],{"title":103,"path":136,"stem":137},"\u002Fmodels\u002Fimages\u002Foverview","4.models\u002F2.images\u002F1.overview",{"title":139,"path":140,"stem":141},"图片生成接口","\u002Fmodels\u002Fimages\u002Fgeneration","4.models\u002F2.images\u002F2.generation",{"title":143,"path":144,"stem":145,"children":146,"page":43},"用量与余额","\u002Fusage-and-balance","5.usage-and-balance",[147,151],{"title":148,"path":149,"stem":150},"查询余额","\u002Fusage-and-balance\u002Fbalance","5.usage-and-balance\u002F1.balance",{"title":152,"path":153,"stem":154},"查询用量","\u002Fusage-and-balance\u002Fusage","5.usage-and-balance\u002F2.usage",{"title":156,"path":157,"stem":158},"错误码参考","\u002Ferrors","6.errors",{"title":160,"path":161,"stem":162},"文档首页","\u002F","index",{"id":164,"title":127,"body":165,"description":913,"extension":914,"meta":915,"navigation":366,"path":128,"rawbody":916,"requiredFlags":917,"seo":918,"stem":129,"__hash__":919},"docs\u002F4.models\u002F1.chat\u002F7.multimodal.md",{"type":166,"value":167,"toc":909},"minimark",[168,171,180,185,201,807,827,830,838,897,905],[169,170,127],"h1",{"id":127},[172,173,174,175,179],"p",{},"本页说明对话接口的多模态输入能力。SilvaMux 对多模态内容",[176,177,178],"strong",{},"透传","给模型侧，能否处理取决于模型本身。",[181,182,184],"h2",{"id":183},"图片输入vision","图片输入（vision）",[172,186,187,188,192,193,196,197,200],{},"支持 OpenAI vision 格式，在 ",[189,190,191],"code",{},"messages"," 的 ",[189,194,195],{},"content"," 中传入 ",[189,198,199],{},"image_url","：",[202,203,204,337,468,584],"code-tabs",{},[205,206,208],"code-tab",{"label":207},"cURL",[209,210,215],"pre",{"className":211,"code":212,"language":213,"meta":214,"style":214},"language-bash shiki shiki-themes github-light github-dark","curl https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer $SILVAMUX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"minimax-m3\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": [\n          {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n          {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}}\n        ]\n      }\n    ]\n  }'\n","bash","",[189,216,217,234,252,262,271,277,283,289,295,301,307,313,319,325,331],{"__ignoreMap":214},[218,219,222,226,230],"span",{"class":220,"line":221},"line",1,[218,223,225],{"class":224},"sScJk","curl",[218,227,229],{"class":228},"sZZnC"," https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions",[218,231,233],{"class":232},"sj4cs"," \\\n",[218,235,237,240,243,247,250],{"class":220,"line":236},2,[218,238,239],{"class":232},"  -H",[218,241,242],{"class":228}," \"Authorization: Bearer ",[218,244,246],{"class":245},"sVt8B","$SILVAMUX_API_KEY",[218,248,249],{"class":228},"\"",[218,251,233],{"class":232},[218,253,255,257,260],{"class":220,"line":254},3,[218,256,239],{"class":232},[218,258,259],{"class":228}," \"Content-Type: application\u002Fjson\"",[218,261,233],{"class":232},[218,263,265,268],{"class":220,"line":264},4,[218,266,267],{"class":232},"  -d",[218,269,270],{"class":228}," '{\n",[218,272,274],{"class":220,"line":273},5,[218,275,276],{"class":228},"    \"model\": \"minimax-m3\",\n",[218,278,280],{"class":220,"line":279},6,[218,281,282],{"class":228},"    \"messages\": [\n",[218,284,286],{"class":220,"line":285},7,[218,287,288],{"class":228},"      {\n",[218,290,292],{"class":220,"line":291},8,[218,293,294],{"class":228},"        \"role\": \"user\",\n",[218,296,298],{"class":220,"line":297},9,[218,299,300],{"class":228},"        \"content\": [\n",[218,302,304],{"class":220,"line":303},10,[218,305,306],{"class":228},"          {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n",[218,308,310],{"class":220,"line":309},11,[218,311,312],{"class":228},"          {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}}\n",[218,314,316],{"class":220,"line":315},12,[218,317,318],{"class":228},"        ]\n",[218,320,322],{"class":220,"line":321},13,[218,323,324],{"class":228},"      }\n",[218,326,328],{"class":220,"line":327},14,[218,329,330],{"class":228},"    ]\n",[218,332,334],{"class":220,"line":333},15,[218,335,336],{"class":228},"  }'\n",[205,338,340],{"label":339},"Python",[209,341,345],{"className":342,"code":343,"language":344,"meta":214,"style":214},"language-python shiki shiki-themes github-light github-dark","# pip install openai\nimport os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ[\"SILVAMUX_API_KEY\"],\n    base_url=\"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n)\n\nresponse = client.chat.completions.create(\n    model=\"minimax-m3\",\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": [\n                {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n                {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}},\n            ],\n        }\n    ],\n)\n\nprint(response.choices[0].message.content)\n","python",[189,346,347,352,357,362,368,373,378,383,388,392,397,402,407,412,417,422,428,434,440,446,452,457,462],{"__ignoreMap":214},[218,348,349],{"class":220,"line":221},[218,350,351],{},"# pip install openai\n",[218,353,354],{"class":220,"line":236},[218,355,356],{},"import os\n",[218,358,359],{"class":220,"line":254},[218,360,361],{},"from openai import OpenAI\n",[218,363,364],{"class":220,"line":264},[218,365,367],{"emptyLinePlaceholder":366},true,"\n",[218,369,370],{"class":220,"line":273},[218,371,372],{},"client = OpenAI(\n",[218,374,375],{"class":220,"line":279},[218,376,377],{},"    api_key=os.environ[\"SILVAMUX_API_KEY\"],\n",[218,379,380],{"class":220,"line":285},[218,381,382],{},"    base_url=\"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n",[218,384,385],{"class":220,"line":291},[218,386,387],{},")\n",[218,389,390],{"class":220,"line":297},[218,391,367],{"emptyLinePlaceholder":366},[218,393,394],{"class":220,"line":303},[218,395,396],{},"response = client.chat.completions.create(\n",[218,398,399],{"class":220,"line":309},[218,400,401],{},"    model=\"minimax-m3\",\n",[218,403,404],{"class":220,"line":315},[218,405,406],{},"    messages=[\n",[218,408,409],{"class":220,"line":321},[218,410,411],{},"        {\n",[218,413,414],{"class":220,"line":327},[218,415,416],{},"            \"role\": \"user\",\n",[218,418,419],{"class":220,"line":333},[218,420,421],{},"            \"content\": [\n",[218,423,425],{"class":220,"line":424},16,[218,426,427],{},"                {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n",[218,429,431],{"class":220,"line":430},17,[218,432,433],{},"                {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}},\n",[218,435,437],{"class":220,"line":436},18,[218,438,439],{},"            ],\n",[218,441,443],{"class":220,"line":442},19,[218,444,445],{},"        }\n",[218,447,449],{"class":220,"line":448},20,[218,450,451],{},"    ],\n",[218,453,455],{"class":220,"line":454},21,[218,456,387],{},[218,458,460],{"class":220,"line":459},22,[218,461,367],{"emptyLinePlaceholder":366},[218,463,465],{"class":220,"line":464},23,[218,466,467],{},"print(response.choices[0].message.content)\n",[205,469,471],{"label":470},"JavaScript",[209,472,476],{"className":473,"code":474,"language":475,"meta":214,"style":214},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F npm install openai\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: process.env.SILVAMUX_API_KEY,\n  baseURL: \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n});\n\nconst response = await client.chat.completions.create({\n  model: \"minimax-m3\",\n  messages: [\n    {\n      role: \"user\",\n      content: [\n        { type: \"text\", text: \"这张图里有什么？\" },\n        { type: \"image_url\", image_url: { url: \"https:\u002F\u002Fexample.com\u002Fcat.jpg\" } },\n      ],\n    },\n  ],\n});\n\nconsole.log(response.choices[0].message.content);\n","javascript",[189,477,478,483,488,492,497,502,507,512,516,521,526,531,536,541,546,551,556,561,566,571,575,579],{"__ignoreMap":214},[218,479,480],{"class":220,"line":221},[218,481,482],{},"\u002F\u002F npm install openai\n",[218,484,485],{"class":220,"line":236},[218,486,487],{},"import OpenAI from \"openai\";\n",[218,489,490],{"class":220,"line":254},[218,491,367],{"emptyLinePlaceholder":366},[218,493,494],{"class":220,"line":264},[218,495,496],{},"const client = new OpenAI({\n",[218,498,499],{"class":220,"line":273},[218,500,501],{},"  apiKey: process.env.SILVAMUX_API_KEY,\n",[218,503,504],{"class":220,"line":279},[218,505,506],{},"  baseURL: \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n",[218,508,509],{"class":220,"line":285},[218,510,511],{},"});\n",[218,513,514],{"class":220,"line":291},[218,515,367],{"emptyLinePlaceholder":366},[218,517,518],{"class":220,"line":297},[218,519,520],{},"const response = await client.chat.completions.create({\n",[218,522,523],{"class":220,"line":303},[218,524,525],{},"  model: \"minimax-m3\",\n",[218,527,528],{"class":220,"line":309},[218,529,530],{},"  messages: [\n",[218,532,533],{"class":220,"line":315},[218,534,535],{},"    {\n",[218,537,538],{"class":220,"line":321},[218,539,540],{},"      role: \"user\",\n",[218,542,543],{"class":220,"line":327},[218,544,545],{},"      content: [\n",[218,547,548],{"class":220,"line":333},[218,549,550],{},"        { type: \"text\", text: \"这张图里有什么？\" },\n",[218,552,553],{"class":220,"line":424},[218,554,555],{},"        { type: \"image_url\", image_url: { url: \"https:\u002F\u002Fexample.com\u002Fcat.jpg\" } },\n",[218,557,558],{"class":220,"line":430},[218,559,560],{},"      ],\n",[218,562,563],{"class":220,"line":436},[218,564,565],{},"    },\n",[218,567,568],{"class":220,"line":442},[218,569,570],{},"  ],\n",[218,572,573],{"class":220,"line":448},[218,574,511],{},[218,576,577],{"class":220,"line":454},[218,578,367],{"emptyLinePlaceholder":366},[218,580,581],{"class":220,"line":459},[218,582,583],{},"console.log(response.choices[0].message.content);\n",[205,585,587],{"label":586},"Go",[209,588,592],{"className":589,"code":590,"language":591,"meta":214,"style":214},"language-go shiki shiki-themes github-light github-dark","\u002F\u002F 仅依赖标准库\npackage main\n\nimport (\n    \"bytes\"\n    \"fmt\"\n    \"io\"\n    \"net\u002Fhttp\"\n    \"os\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"model\": \"minimax-m3\",\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": [\n                    {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n                    {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}}\n                ]\n            }\n        ]\n    }`)\n\n    req, err := http.NewRequest(\"POST\", \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions\", bytes.NewReader(payload))\n    if err != nil {\n        panic(err)\n    }\n    req.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"SILVAMUX_API_KEY\"))\n    req.Header.Set(\"Content-Type\", \"application\u002Fjson\")\n\n    resp, err := http.DefaultClient.Do(req)\n    if err != nil {\n        panic(err)\n    }\n    defer resp.Body.Close()\n\n    body, _ := io.ReadAll(resp.Body)\n    fmt.Println(string(body))\n}\n","go",[189,593,594,599,604,608,613,618,623,628,633,638,642,646,651,656,661,666,671,676,681,686,691,696,701,705,711,716,722,728,734,740,746,752,757,763,768,773,778,784,789,795,801],{"__ignoreMap":214},[218,595,596],{"class":220,"line":221},[218,597,598],{},"\u002F\u002F 仅依赖标准库\n",[218,600,601],{"class":220,"line":236},[218,602,603],{},"package main\n",[218,605,606],{"class":220,"line":254},[218,607,367],{"emptyLinePlaceholder":366},[218,609,610],{"class":220,"line":264},[218,611,612],{},"import (\n",[218,614,615],{"class":220,"line":273},[218,616,617],{},"    \"bytes\"\n",[218,619,620],{"class":220,"line":279},[218,621,622],{},"    \"fmt\"\n",[218,624,625],{"class":220,"line":285},[218,626,627],{},"    \"io\"\n",[218,629,630],{"class":220,"line":291},[218,631,632],{},"    \"net\u002Fhttp\"\n",[218,634,635],{"class":220,"line":297},[218,636,637],{},"    \"os\"\n",[218,639,640],{"class":220,"line":303},[218,641,387],{},[218,643,644],{"class":220,"line":309},[218,645,367],{"emptyLinePlaceholder":366},[218,647,648],{"class":220,"line":315},[218,649,650],{},"func main() {\n",[218,652,653],{"class":220,"line":321},[218,654,655],{},"    payload := []byte(`{\n",[218,657,658],{"class":220,"line":327},[218,659,660],{},"        \"model\": \"minimax-m3\",\n",[218,662,663],{"class":220,"line":333},[218,664,665],{},"        \"messages\": [\n",[218,667,668],{"class":220,"line":424},[218,669,670],{},"            {\n",[218,672,673],{"class":220,"line":430},[218,674,675],{},"                \"role\": \"user\",\n",[218,677,678],{"class":220,"line":436},[218,679,680],{},"                \"content\": [\n",[218,682,683],{"class":220,"line":442},[218,684,685],{},"                    {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n",[218,687,688],{"class":220,"line":448},[218,689,690],{},"                    {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}}\n",[218,692,693],{"class":220,"line":454},[218,694,695],{},"                ]\n",[218,697,698],{"class":220,"line":459},[218,699,700],{},"            }\n",[218,702,703],{"class":220,"line":464},[218,704,318],{},[218,706,708],{"class":220,"line":707},24,[218,709,710],{},"    }`)\n",[218,712,714],{"class":220,"line":713},25,[218,715,367],{"emptyLinePlaceholder":366},[218,717,719],{"class":220,"line":718},26,[218,720,721],{},"    req, err := http.NewRequest(\"POST\", \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions\", bytes.NewReader(payload))\n",[218,723,725],{"class":220,"line":724},27,[218,726,727],{},"    if err != nil {\n",[218,729,731],{"class":220,"line":730},28,[218,732,733],{},"        panic(err)\n",[218,735,737],{"class":220,"line":736},29,[218,738,739],{},"    }\n",[218,741,743],{"class":220,"line":742},30,[218,744,745],{},"    req.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"SILVAMUX_API_KEY\"))\n",[218,747,749],{"class":220,"line":748},31,[218,750,751],{},"    req.Header.Set(\"Content-Type\", \"application\u002Fjson\")\n",[218,753,755],{"class":220,"line":754},32,[218,756,367],{"emptyLinePlaceholder":366},[218,758,760],{"class":220,"line":759},33,[218,761,762],{},"    resp, err := http.DefaultClient.Do(req)\n",[218,764,766],{"class":220,"line":765},34,[218,767,727],{},[218,769,771],{"class":220,"line":770},35,[218,772,733],{},[218,774,776],{"class":220,"line":775},36,[218,777,739],{},[218,779,781],{"class":220,"line":780},37,[218,782,783],{},"    defer resp.Body.Close()\n",[218,785,787],{"class":220,"line":786},38,[218,788,367],{"emptyLinePlaceholder":366},[218,790,792],{"class":220,"line":791},39,[218,793,794],{},"    body, _ := io.ReadAll(resp.Body)\n",[218,796,798],{"class":220,"line":797},40,[218,799,800],{},"    fmt.Println(string(body))\n",[218,802,804],{"class":220,"line":803},41,[218,805,806],{},"}\n",[808,809,810,821,824],"ul",{},[811,812,813,816,817,820],"li",{},[189,814,815],{},"image_url.url"," 可以是公网 URL，或 base64 编码（",[189,818,819],{},"data:image\u002Fjpeg;base64,...","）。",[811,822,823],{},"平台不解析也不剥离图片内容，原样转发给模型侧。",[811,825,826],{},"是否支持图片输入由模型决定（如部分多模态模型支持，纯文本模型会报错）。",[181,828,829],{"id":829},"音频输入",[172,831,832,833,196,835,200],{},"支持 OpenAI audio 格式，在 ",[189,834,195],{},[189,836,837],{},"input_audio",[209,839,843],{"className":840,"code":841,"language":842,"meta":214,"style":214},"language-json shiki shiki-themes github-light github-dark","{\n  \"type\": \"input_audio\",\n  \"input_audio\": {\"data\": \"\u003Cbase64>\", \"format\": \"wav\"}\n}\n","json",[189,844,845,850,864,893],{"__ignoreMap":214},[218,846,847],{"class":220,"line":221},[218,848,849],{"class":245},"{\n",[218,851,852,855,858,861],{"class":220,"line":236},[218,853,854],{"class":232},"  \"type\"",[218,856,857],{"class":245},": ",[218,859,860],{"class":228},"\"input_audio\"",[218,862,863],{"class":245},",\n",[218,865,866,869,872,875,877,880,883,886,888,891],{"class":220,"line":254},[218,867,868],{"class":232},"  \"input_audio\"",[218,870,871],{"class":245},": {",[218,873,874],{"class":232},"\"data\"",[218,876,857],{"class":245},[218,878,879],{"class":228},"\"\u003Cbase64>\"",[218,881,882],{"class":245},", ",[218,884,885],{"class":232},"\"format\"",[218,887,857],{"class":245},[218,889,890],{"class":228},"\"wav\"",[218,892,806],{"class":245},[218,894,895],{"class":220,"line":264},[218,896,806],{"class":245},[808,898,899,902],{},[811,900,901],{},"平台透传，能否处理由模型决定。",[811,903,904],{},"音频 token 按普通输入 token 计价（无独立多模态单价）。",[906,907,908],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":214,"searchDepth":236,"depth":236,"links":910},[911,912],{"id":183,"depth":236,"text":184},{"id":829,"depth":236,"text":829},"查看图片和音频等多模态内容的输入格式与模型能力限制。","md",{},"---\ntitle: 多模态输入\ndescription: 查看图片和音频等多模态内容的输入格式与模型能力限制。\n---\n\n# 多模态输入\n\n本页说明对话接口的多模态输入能力。SilvaMux 对多模态内容**透传**给模型侧，能否处理取决于模型本身。\n\n## 图片输入（vision）\n\n支持 OpenAI vision 格式，在 `messages` 的 `content` 中传入 `image_url`：\n\n::code-tabs\n:::code-tab{label=\"cURL\"}\n```bash\ncurl https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer $SILVAMUX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"minimax-m3\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": [\n          {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n          {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}}\n        ]\n      }\n    ]\n  }'\n```\n:::\n:::code-tab{label=\"Python\"}\n```python\n# pip install openai\nimport os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ[\"SILVAMUX_API_KEY\"],\n    base_url=\"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n)\n\nresponse = client.chat.completions.create(\n    model=\"minimax-m3\",\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": [\n                {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n                {\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}},\n            ],\n        }\n    ],\n)\n\nprint(response.choices[0].message.content)\n```\n:::\n:::code-tab{label=\"JavaScript\"}\n```javascript\n\u002F\u002F npm install openai\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: process.env.SILVAMUX_API_KEY,\n  baseURL: \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n});\n\nconst response = await client.chat.completions.create({\n  model: \"minimax-m3\",\n  messages: [\n    {\n      role: \"user\",\n      content: [\n        { type: \"text\", text: \"这张图里有什么？\" },\n        { type: \"image_url\", image_url: { url: \"https:\u002F\u002Fexample.com\u002Fcat.jpg\" } },\n      ],\n    },\n  ],\n});\n\nconsole.log(response.choices[0].message.content);\n```\n:::\n:::code-tab{label=\"Go\"}\n```go\n\u002F\u002F 仅依赖标准库\npackage main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\u002Fhttp\"\n\t\"os\"\n)\n\nfunc main() {\n\tpayload := []byte(`{\n\t\t\"model\": \"minimax-m3\",\n\t\t\"messages\": [\n\t\t\t{\n\t\t\t\t\"role\": \"user\",\n\t\t\t\t\"content\": [\n\t\t\t\t\t{\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n\t\t\t\t\t{\"type\": \"image_url\", \"image_url\": {\"url\": \"https:\u002F\u002Fexample.com\u002Fcat.jpg\"}}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t}`)\n\n\treq, err := http.NewRequest(\"POST\", \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions\", bytes.NewReader(payload))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"SILVAMUX_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application\u002Fjson\")\n\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n\n\tbody, _ := io.ReadAll(resp.Body)\n\tfmt.Println(string(body))\n}\n```\n:::\n::\n\n- `image_url.url` 可以是公网 URL，或 base64 编码（`data:image\u002Fjpeg;base64,...`）。\n- 平台不解析也不剥离图片内容，原样转发给模型侧。\n- 是否支持图片输入由模型决定（如部分多模态模型支持，纯文本模型会报错）。\n\n## 音频输入\n\n支持 OpenAI audio 格式，在 `content` 中传入 `input_audio`：\n\n```json\n{\n  \"type\": \"input_audio\",\n  \"input_audio\": {\"data\": \"\u003Cbase64>\", \"format\": \"wav\"}\n}\n```\n\n- 平台透传，能否处理由模型决定。\n- 音频 token 按普通输入 token 计价（无独立多模态单价）。\n",[],{"title":127,"description":913},"OHWvQLs6bJuW88C0coD2YzyT9V3eVImtWfI-PA7_l3M"]