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