[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-nav-zh":3,"docs-zh-models\u002Fchat\u002Foverview":163,"$fMfNGmlyCdNoDCVQ7TgrfnLxKMln4u_bAZVPHPJkuObA":1182},[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":103,"body":165,"description":1175,"extension":1176,"meta":1177,"navigation":638,"path":104,"rawbody":1178,"requiredFlags":1179,"seo":1180,"stem":105,"__hash__":1181},"docs\u002F4.models\u002F1.chat\u002F1.overview.md",{"type":166,"value":167,"toc":1166},"minimark",[168,172,185,190,193,322,333,338,341,346,349,352,460,474,477,485,488,515,1153,1156,1162],[169,170,171],"h1",{"id":171},"文本生成模型",[173,174,175,176,180,181,184],"p",{},"SilvaMux 支持多种",[177,178,179],"strong",{},"厂商协议兼容入口","，也提供一个可选的",[177,182,183],{},"统一入口","。新项目建议按照目标模型支持的厂商协议接入；使用 OpenAI SDK 的项目默认选择 OpenAI Chat Completions 兼容入口。",[186,187,189],"h2",{"id":188},"厂商协议兼容入口推荐","厂商协议兼容入口（推荐）",[173,191,192],{},"下列端点接收对应厂商的请求格式，并保持相应的响应和错误结构，适合官方 SDK、已有代码迁移或需要字段级透传的场景。",[194,195,196,212],"table",{},[197,198,199],"thead",{},[200,201,202,206,209],"tr",{},[203,204,205],"th",{},"兼容格式",[203,207,208],{},"端点",[203,210,211],{},"文档",[213,214,215,233,248,263,278,292,305],"tbody",{},[200,216,217,221,227],{},[218,219,220],"td",{},"OpenAI Chat Completions",[218,222,223],{},[224,225,226],"code",{},"POST \u002Fapi\u002Fv1\u002Fchat\u002Fcompletions",[218,228,229],{},[230,231,107],"a",{"href":232},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fopenai",[200,234,235,238,243],{},[218,236,237],{},"Anthropic",[218,239,240],{},[224,241,242],{},"POST \u002Fapi\u002Fv1\u002Fmessages",[218,244,245],{},[230,246,111],{"href":247},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fanthropic",[200,249,250,253,258],{},[218,251,252],{},"Volcengine v3",[218,254,255],{},[224,256,257],{},"POST \u002Fapi\u002Fv3\u002Fchat\u002Fcompletions",[218,259,260],{},[230,261,115],{"href":262},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fvolcengine",[200,264,265,268,273],{},[218,266,267],{},"智谱",[218,269,270],{},[224,271,272],{},"POST \u002Fapi\u002Fpaas\u002Fv4\u002Fchat\u002Fcompletions",[218,274,275],{},[230,276,119],{"href":277},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fzhipu",[200,279,280,282,287],{},[218,281,123],{},[218,283,284],{},[224,285,286],{},"POST \u002Fapi\u002Fv0\u002Fchat\u002Fcompletions",[218,288,289],{},[230,290,123],{"href":291},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Funified",[200,293,294,297,302],{},[218,295,296],{},"Responses",[218,298,299],{},[224,300,301],{},"POST \u002Fapi\u002Fv1\u002Fresponses",[218,303,304],{},"兼容 OpenAI Responses API，适用于支持的模型（如 codex 系列）",[200,306,307,310,315],{},[218,308,309],{},"Gemini",[218,311,312],{},[224,313,314],{},"POST \u002Fapi\u002Fv1beta\u002Fmodels\u002F{model}:generateContent",[218,316,317,318,321],{},"兼容 Gemini ",[224,319,320],{},"generateContent"," 格式；当前无公开可发现模型，不作为可执行示例",[173,323,324,325,328,329,332],{},"这些路径属于 SilvaMux 的兼容入口，并非模型厂商的官方服务地址。调用时使用 SilvaMux 提供的 API Key。公开 OpenAPI 仅以上表中的标准路径作为新接入契约；历史地址 ",[224,326,327],{},"\u002Fapi\u002Fanthropic\u002Fv1\u002Fmessages"," 和 ",[224,330,331],{},"\u002Fapi\u002Fv1\u002Fgemini\u002Fv1beta\u002Fmodels\u002F{model}:generateContent"," 仅供已接入项目兼容，新项目不应使用。",[334,335,337],"h3",{"id":336},"openai-responses","OpenAI Responses",[173,339,340],{},"兼容 OpenAI Responses API，适用于支持的模型（如 codex 系列）：",[342,343],"api-endpoint",{"method":344,"path":345},"POST","\u002Fapi\u002Fv1\u002Fresponses",[186,347,348],{"id":348},"常用参数",[173,350,351],{},"OpenAI Chat 与统一入口的常用参数：",[194,353,354,367],{},[197,355,356],{},[200,357,358,361,364],{},[203,359,360],{},"参数",[203,362,363],{},"类型",[203,365,366],{},"说明",[213,368,369,397,418,434,447],{},[200,370,371,376,379],{},[218,372,373],{},[224,374,375],{},"model",[218,377,378],{},"string",[218,380,381,382,385,386,389,390,393,394],{},"必填。模型调用名（",[224,383,384],{},"id"," 或 ",[224,387,388],{},"alias","），如 ",[224,391,392],{},"minimax-m2.5","、",[224,395,396],{},"doubao-seed-2.0-pro",[200,398,399,404,407],{},[218,400,401],{},[224,402,403],{},"messages",[218,405,406],{},"array",[218,408,409,410,413,414,417],{},"必填。对话消息列表，格式同 OpenAI（",[224,411,412],{},"role"," + ",[224,415,416],{},"content","）",[200,419,420,425,428],{},[218,421,422],{},[224,423,424],{},"stream",[218,426,427],{},"boolean",[218,429,430,431],{},"是否流式返回，默认 ",[224,432,433],{},"false",[200,435,436,441,444],{},[218,437,438],{},[224,439,440],{},"temperature",[218,442,443],{},"number",[218,445,446],{},"采样温度，默认 1.0",[200,448,449,454,457],{},[218,450,451],{},[224,452,453],{},"max_tokens",[218,455,456],{},"integer",[218,458,459],{},"最大生成 token 数",[461,462,463],"blockquote",{},[173,464,465,466,470,471,473],{},"不同厂商协议的字段结构不同。请先在",[230,467,469],{"href":468},"\u002Fzh-cn\u002Fmodels","模型广场","筛选支持目标接口格式的模型，再复制详情页中的调用名填入 ",[224,472,375],{},"。",[186,475,476],{"id":476},"认证",[173,478,479,385,482,473],{},[224,480,481],{},"Authorization: Bearer \u003CAPI_KEY>",[224,483,484],{},"x-api-key: \u003CAPI_KEY>",[186,486,487],{"id":487},"流式输出",[173,489,490,491,494,495,498,499,502,503,506,507,510,511,514],{},"设置 ",[224,492,493],{},"stream: true"," 即可获得流式响应（SSE）。响应为 ",[224,496,497],{},"text\u002Fevent-stream","，每个事件以 ",[224,500,501],{},"data: "," 开头。最终可能收到 ",[224,504,505],{},"choices"," 为空、带有 ",[224,508,509],{},"usage"," 的用量 chunk，随后服务器关闭连接；客户端不应仅依赖 ",[224,512,513],{},"data: [DONE]"," 判断完成。Anthropic 格式流式遵循 Anthropic SSE 规范。",[516,517,518,609,736,832],"code-tabs",{},[519,520,522],"code-tab",{"label":521},"cURL",[523,524,529],"pre",{"className":525,"code":526,"language":527,"meta":528,"style":528},"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-m2.5\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n    \"stream\": true\n  }'\n","bash","",[224,530,531,548,566,576,585,591,597,603],{"__ignoreMap":528},[532,533,536,540,544],"span",{"class":534,"line":535},"line",1,[532,537,539],{"class":538},"sScJk","curl",[532,541,543],{"class":542},"sZZnC"," https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions",[532,545,547],{"class":546},"sj4cs"," \\\n",[532,549,551,554,557,561,564],{"class":534,"line":550},2,[532,552,553],{"class":546},"  -H",[532,555,556],{"class":542}," \"Authorization: Bearer ",[532,558,560],{"class":559},"sVt8B","$SILVAMUX_API_KEY",[532,562,563],{"class":542},"\"",[532,565,547],{"class":546},[532,567,569,571,574],{"class":534,"line":568},3,[532,570,553],{"class":546},[532,572,573],{"class":542}," \"Content-Type: application\u002Fjson\"",[532,575,547],{"class":546},[532,577,579,582],{"class":534,"line":578},4,[532,580,581],{"class":546},"  -d",[532,583,584],{"class":542}," '{\n",[532,586,588],{"class":534,"line":587},5,[532,589,590],{"class":542},"    \"model\": \"minimax-m2.5\",\n",[532,592,594],{"class":534,"line":593},6,[532,595,596],{"class":542},"    \"messages\": [{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n",[532,598,600],{"class":534,"line":599},7,[532,601,602],{"class":542},"    \"stream\": true\n",[532,604,606],{"class":534,"line":605},8,[532,607,608],{"class":542},"  }'\n",[519,610,612],{"label":611},"Python",[523,613,617],{"className":614,"code":615,"language":616,"meta":528,"style":528},"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\nstream = client.chat.completions.create(\n    model=\"minimax-m2.5\",\n    messages=[{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n    stream=True,\n)\nfor chunk in stream:\n    if chunk.choices:\n        delta = chunk.choices[0].delta.content\n        if delta:\n            print(delta, end=\"\", flush=True)\n    if chunk.usage:\n        print(f\"\\n用量：{chunk.usage}\")\n","python",[224,618,619,624,629,634,640,645,650,655,660,665,671,677,683,689,694,700,706,712,718,724,730],{"__ignoreMap":528},[532,620,621],{"class":534,"line":535},[532,622,623],{},"# pip install openai\n",[532,625,626],{"class":534,"line":550},[532,627,628],{},"import os\n",[532,630,631],{"class":534,"line":568},[532,632,633],{},"from openai import OpenAI\n",[532,635,636],{"class":534,"line":578},[532,637,639],{"emptyLinePlaceholder":638},true,"\n",[532,641,642],{"class":534,"line":587},[532,643,644],{},"client = OpenAI(\n",[532,646,647],{"class":534,"line":593},[532,648,649],{},"    api_key=os.environ[\"SILVAMUX_API_KEY\"],\n",[532,651,652],{"class":534,"line":599},[532,653,654],{},"    base_url=\"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n",[532,656,657],{"class":534,"line":605},[532,658,659],{},")\n",[532,661,663],{"class":534,"line":662},9,[532,664,639],{"emptyLinePlaceholder":638},[532,666,668],{"class":534,"line":667},10,[532,669,670],{},"stream = client.chat.completions.create(\n",[532,672,674],{"class":534,"line":673},11,[532,675,676],{},"    model=\"minimax-m2.5\",\n",[532,678,680],{"class":534,"line":679},12,[532,681,682],{},"    messages=[{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n",[532,684,686],{"class":534,"line":685},13,[532,687,688],{},"    stream=True,\n",[532,690,692],{"class":534,"line":691},14,[532,693,659],{},[532,695,697],{"class":534,"line":696},15,[532,698,699],{},"for chunk in stream:\n",[532,701,703],{"class":534,"line":702},16,[532,704,705],{},"    if chunk.choices:\n",[532,707,709],{"class":534,"line":708},17,[532,710,711],{},"        delta = chunk.choices[0].delta.content\n",[532,713,715],{"class":534,"line":714},18,[532,716,717],{},"        if delta:\n",[532,719,721],{"class":534,"line":720},19,[532,722,723],{},"            print(delta, end=\"\", flush=True)\n",[532,725,727],{"class":534,"line":726},20,[532,728,729],{},"    if chunk.usage:\n",[532,731,733],{"class":534,"line":732},21,[532,734,735],{},"        print(f\"\\n用量：{chunk.usage}\")\n",[519,737,739],{"label":738},"JavaScript",[523,740,744],{"className":741,"code":742,"language":743,"meta":528,"style":528},"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 stream = await client.chat.completions.create({\n  model: \"minimax-m2.5\",\n  messages: [{ role: \"user\", content: \"写一首五言绝句\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  const delta = chunk.choices[0]?.delta?.content;\n  if (delta) process.stdout.write(delta);\n}\n","javascript",[224,745,746,751,756,760,765,770,775,780,784,789,794,799,804,808,812,817,822,827],{"__ignoreMap":528},[532,747,748],{"class":534,"line":535},[532,749,750],{},"\u002F\u002F npm install openai\n",[532,752,753],{"class":534,"line":550},[532,754,755],{},"import OpenAI from \"openai\";\n",[532,757,758],{"class":534,"line":568},[532,759,639],{"emptyLinePlaceholder":638},[532,761,762],{"class":534,"line":578},[532,763,764],{},"const client = new OpenAI({\n",[532,766,767],{"class":534,"line":587},[532,768,769],{},"  apiKey: process.env.SILVAMUX_API_KEY,\n",[532,771,772],{"class":534,"line":593},[532,773,774],{},"  baseURL: \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\",\n",[532,776,777],{"class":534,"line":599},[532,778,779],{},"});\n",[532,781,782],{"class":534,"line":605},[532,783,639],{"emptyLinePlaceholder":638},[532,785,786],{"class":534,"line":662},[532,787,788],{},"const stream = await client.chat.completions.create({\n",[532,790,791],{"class":534,"line":667},[532,792,793],{},"  model: \"minimax-m2.5\",\n",[532,795,796],{"class":534,"line":673},[532,797,798],{},"  messages: [{ role: \"user\", content: \"写一首五言绝句\" }],\n",[532,800,801],{"class":534,"line":679},[532,802,803],{},"  stream: true,\n",[532,805,806],{"class":534,"line":685},[532,807,779],{},[532,809,810],{"class":534,"line":691},[532,811,639],{"emptyLinePlaceholder":638},[532,813,814],{"class":534,"line":696},[532,815,816],{},"for await (const chunk of stream) {\n",[532,818,819],{"class":534,"line":702},[532,820,821],{},"  const delta = chunk.choices[0]?.delta?.content;\n",[532,823,824],{"class":534,"line":708},[532,825,826],{},"  if (delta) process.stdout.write(delta);\n",[532,828,829],{"class":534,"line":714},[532,830,831],{},"}\n",[519,833,835],{"label":834},"Go",[523,836,840],{"className":837,"code":838,"language":839,"meta":528,"style":528},"language-go shiki shiki-themes github-light github-dark","\u002F\u002F 仅依赖标准库\npackage main\n\nimport (\n    \"bufio\"\n    \"bytes\"\n    \"encoding\u002Fjson\"\n    \"fmt\"\n    \"net\u002Fhttp\"\n    \"os\"\n    \"strings\"\n)\n\nfunc main() {\n    payload := []byte(`{\n        \"model\": \"minimax-m2.5\",\n        \"messages\": [{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n        \"stream\": true\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    scanner := bufio.NewScanner(resp.Body)\n    for scanner.Scan() {\n        line := scanner.Text()\n        if !strings.HasPrefix(line, \"data: \") {\n            continue\n        }\n        data := strings.TrimPrefix(line, \"data: \")\n        if data == \"[DONE]\" {\n            break\n        }\n        var chunk struct {\n            Choices []struct {\n                Delta struct {\n                    Content string `json:\"content\"`\n                } `json:\"delta\"`\n            } `json:\"choices\"`\n        }\n        if err := json.Unmarshal([]byte(data), &chunk); err != nil {\n            continue\n        }\n        if len(chunk.Choices) > 0 {\n            fmt.Print(chunk.Choices[0].Delta.Content)\n        }\n    }\n}\n","go",[224,841,842,847,852,856,861,866,871,876,881,886,891,896,900,904,909,914,919,924,929,934,938,943,949,955,961,967,973,978,984,989,994,999,1005,1010,1016,1022,1028,1034,1040,1046,1052,1058,1064,1069,1075,1081,1087,1093,1099,1105,1110,1116,1121,1126,1132,1138,1143,1148],{"__ignoreMap":528},[532,843,844],{"class":534,"line":535},[532,845,846],{},"\u002F\u002F 仅依赖标准库\n",[532,848,849],{"class":534,"line":550},[532,850,851],{},"package main\n",[532,853,854],{"class":534,"line":568},[532,855,639],{"emptyLinePlaceholder":638},[532,857,858],{"class":534,"line":578},[532,859,860],{},"import (\n",[532,862,863],{"class":534,"line":587},[532,864,865],{},"    \"bufio\"\n",[532,867,868],{"class":534,"line":593},[532,869,870],{},"    \"bytes\"\n",[532,872,873],{"class":534,"line":599},[532,874,875],{},"    \"encoding\u002Fjson\"\n",[532,877,878],{"class":534,"line":605},[532,879,880],{},"    \"fmt\"\n",[532,882,883],{"class":534,"line":662},[532,884,885],{},"    \"net\u002Fhttp\"\n",[532,887,888],{"class":534,"line":667},[532,889,890],{},"    \"os\"\n",[532,892,893],{"class":534,"line":673},[532,894,895],{},"    \"strings\"\n",[532,897,898],{"class":534,"line":679},[532,899,659],{},[532,901,902],{"class":534,"line":685},[532,903,639],{"emptyLinePlaceholder":638},[532,905,906],{"class":534,"line":691},[532,907,908],{},"func main() {\n",[532,910,911],{"class":534,"line":696},[532,912,913],{},"    payload := []byte(`{\n",[532,915,916],{"class":534,"line":702},[532,917,918],{},"        \"model\": \"minimax-m2.5\",\n",[532,920,921],{"class":534,"line":708},[532,922,923],{},"        \"messages\": [{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n",[532,925,926],{"class":534,"line":714},[532,927,928],{},"        \"stream\": true\n",[532,930,931],{"class":534,"line":720},[532,932,933],{},"    }`)\n",[532,935,936],{"class":534,"line":726},[532,937,639],{"emptyLinePlaceholder":638},[532,939,940],{"class":534,"line":732},[532,941,942],{},"    req, err := http.NewRequest(\"POST\", \"https:\u002F\u002Fwww.silvamux.com\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions\", bytes.NewReader(payload))\n",[532,944,946],{"class":534,"line":945},22,[532,947,948],{},"    if err != nil {\n",[532,950,952],{"class":534,"line":951},23,[532,953,954],{},"        panic(err)\n",[532,956,958],{"class":534,"line":957},24,[532,959,960],{},"    }\n",[532,962,964],{"class":534,"line":963},25,[532,965,966],{},"    req.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"SILVAMUX_API_KEY\"))\n",[532,968,970],{"class":534,"line":969},26,[532,971,972],{},"    req.Header.Set(\"Content-Type\", \"application\u002Fjson\")\n",[532,974,976],{"class":534,"line":975},27,[532,977,639],{"emptyLinePlaceholder":638},[532,979,981],{"class":534,"line":980},28,[532,982,983],{},"    resp, err := http.DefaultClient.Do(req)\n",[532,985,987],{"class":534,"line":986},29,[532,988,948],{},[532,990,992],{"class":534,"line":991},30,[532,993,954],{},[532,995,997],{"class":534,"line":996},31,[532,998,960],{},[532,1000,1002],{"class":534,"line":1001},32,[532,1003,1004],{},"    defer resp.Body.Close()\n",[532,1006,1008],{"class":534,"line":1007},33,[532,1009,639],{"emptyLinePlaceholder":638},[532,1011,1013],{"class":534,"line":1012},34,[532,1014,1015],{},"    scanner := bufio.NewScanner(resp.Body)\n",[532,1017,1019],{"class":534,"line":1018},35,[532,1020,1021],{},"    for scanner.Scan() {\n",[532,1023,1025],{"class":534,"line":1024},36,[532,1026,1027],{},"        line := scanner.Text()\n",[532,1029,1031],{"class":534,"line":1030},37,[532,1032,1033],{},"        if !strings.HasPrefix(line, \"data: \") {\n",[532,1035,1037],{"class":534,"line":1036},38,[532,1038,1039],{},"            continue\n",[532,1041,1043],{"class":534,"line":1042},39,[532,1044,1045],{},"        }\n",[532,1047,1049],{"class":534,"line":1048},40,[532,1050,1051],{},"        data := strings.TrimPrefix(line, \"data: \")\n",[532,1053,1055],{"class":534,"line":1054},41,[532,1056,1057],{},"        if data == \"[DONE]\" {\n",[532,1059,1061],{"class":534,"line":1060},42,[532,1062,1063],{},"            break\n",[532,1065,1067],{"class":534,"line":1066},43,[532,1068,1045],{},[532,1070,1072],{"class":534,"line":1071},44,[532,1073,1074],{},"        var chunk struct {\n",[532,1076,1078],{"class":534,"line":1077},45,[532,1079,1080],{},"            Choices []struct {\n",[532,1082,1084],{"class":534,"line":1083},46,[532,1085,1086],{},"                Delta struct {\n",[532,1088,1090],{"class":534,"line":1089},47,[532,1091,1092],{},"                    Content string `json:\"content\"`\n",[532,1094,1096],{"class":534,"line":1095},48,[532,1097,1098],{},"                } `json:\"delta\"`\n",[532,1100,1102],{"class":534,"line":1101},49,[532,1103,1104],{},"            } `json:\"choices\"`\n",[532,1106,1108],{"class":534,"line":1107},50,[532,1109,1045],{},[532,1111,1113],{"class":534,"line":1112},51,[532,1114,1115],{},"        if err := json.Unmarshal([]byte(data), &chunk); err != nil {\n",[532,1117,1119],{"class":534,"line":1118},52,[532,1120,1039],{},[532,1122,1124],{"class":534,"line":1123},53,[532,1125,1045],{},[532,1127,1129],{"class":534,"line":1128},54,[532,1130,1131],{},"        if len(chunk.Choices) > 0 {\n",[532,1133,1135],{"class":534,"line":1134},55,[532,1136,1137],{},"            fmt.Print(chunk.Choices[0].Delta.Content)\n",[532,1139,1141],{"class":534,"line":1140},56,[532,1142,1045],{},[532,1144,1146],{"class":534,"line":1145},57,[532,1147,960],{},[532,1149,1151],{"class":534,"line":1150},58,[532,1152,831],{},[186,1154,1155],{"id":1155},"多模态",[173,1157,1158,1159,473],{},"图片、音频等多模态输入格式见",[230,1160,127],{"href":1161},"\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fmultimodal",[1163,1164,1165],"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":528,"searchDepth":550,"depth":550,"links":1167},[1168,1171,1172,1173,1174],{"id":188,"depth":550,"text":189,"children":1169},[1170],{"id":336,"depth":568,"text":337},{"id":348,"depth":550,"text":348},{"id":476,"depth":550,"text":476},{"id":487,"depth":550,"text":487},{"id":1155,"depth":550,"text":1155},"查看统一入口和 OpenAI、Anthropic、Volcengine、Responses、智谱等兼容入口。","md",{},"---\ntitle: 概述\ndescription: 查看统一入口和 OpenAI、Anthropic、Volcengine、Responses、智谱等兼容入口。\n---\n\n# 文本生成模型\n\nSilvaMux 支持多种**厂商协议兼容入口**，也提供一个可选的**统一入口**。新项目建议按照目标模型支持的厂商协议接入；使用 OpenAI SDK 的项目默认选择 OpenAI Chat Completions 兼容入口。\n\n## 厂商协议兼容入口（推荐）\n\n下列端点接收对应厂商的请求格式，并保持相应的响应和错误结构，适合官方 SDK、已有代码迁移或需要字段级透传的场景。\n\n| 兼容格式 | 端点 | 文档 |\n| --- | --- | --- |\n| OpenAI Chat Completions | `POST \u002Fapi\u002Fv1\u002Fchat\u002Fcompletions` | [OpenAI 兼容接口](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fopenai) |\n| Anthropic | `POST \u002Fapi\u002Fv1\u002Fmessages` | [Anthropic 兼容](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fanthropic) |\n| Volcengine v3 | `POST \u002Fapi\u002Fv3\u002Fchat\u002Fcompletions` | [Volcengine 兼容](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fvolcengine) |\n| 智谱 | `POST \u002Fapi\u002Fpaas\u002Fv4\u002Fchat\u002Fcompletions` | [智谱兼容](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fzhipu) |\n| SilvaMux 统一入口 | `POST \u002Fapi\u002Fv0\u002Fchat\u002Fcompletions` | [SilvaMux 统一入口](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Funified) |\n| Responses | `POST \u002Fapi\u002Fv1\u002Fresponses` | 兼容 OpenAI Responses API，适用于支持的模型（如 codex 系列） |\n| Gemini | `POST \u002Fapi\u002Fv1beta\u002Fmodels\u002F{model}:generateContent` | 兼容 Gemini `generateContent` 格式；当前无公开可发现模型，不作为可执行示例 |\n\n这些路径属于 SilvaMux 的兼容入口，并非模型厂商的官方服务地址。调用时使用 SilvaMux 提供的 API Key。公开 OpenAPI 仅以上表中的标准路径作为新接入契约；历史地址 `\u002Fapi\u002Fanthropic\u002Fv1\u002Fmessages` 和 `\u002Fapi\u002Fv1\u002Fgemini\u002Fv1beta\u002Fmodels\u002F{model}:generateContent` 仅供已接入项目兼容，新项目不应使用。\n\n### OpenAI Responses\n\n兼容 OpenAI Responses API，适用于支持的模型（如 codex 系列）：\n\n::api-endpoint{path=\"\u002Fapi\u002Fv1\u002Fresponses\" method=\"POST\"}\n::\n\n## 常用参数\n\nOpenAI Chat 与统一入口的常用参数：\n\n| 参数 | 类型 | 说明 |\n| --- | --- | --- |\n| `model` | string | 必填。模型调用名（`id` 或 `alias`），如 `minimax-m2.5`、`doubao-seed-2.0-pro` |\n| `messages` | array | 必填。对话消息列表，格式同 OpenAI（`role` + `content`） |\n| `stream` | boolean | 是否流式返回，默认 `false` |\n| `temperature` | number | 采样温度，默认 1.0 |\n| `max_tokens` | integer | 最大生成 token 数 |\n\n> 不同厂商协议的字段结构不同。请先在[模型广场](\u002Fzh-cn\u002Fmodels)筛选支持目标接口格式的模型，再复制详情页中的调用名填入 `model`。\n\n## 认证\n\n`Authorization: Bearer \u003CAPI_KEY>` 或 `x-api-key: \u003CAPI_KEY>`。\n\n## 流式输出\n\n设置 `stream: true` 即可获得流式响应（SSE）。响应为 `text\u002Fevent-stream`，每个事件以 `data: ` 开头。最终可能收到 `choices` 为空、带有 `usage` 的用量 chunk，随后服务器关闭连接；客户端不应仅依赖 `data: [DONE]` 判断完成。Anthropic 格式流式遵循 Anthropic SSE 规范。\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-m2.5\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n    \"stream\": true\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\nstream = client.chat.completions.create(\n    model=\"minimax-m2.5\",\n    messages=[{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n    stream=True,\n)\nfor chunk in stream:\n    if chunk.choices:\n        delta = chunk.choices[0].delta.content\n        if delta:\n            print(delta, end=\"\", flush=True)\n    if chunk.usage:\n        print(f\"\\n用量：{chunk.usage}\")\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 stream = await client.chat.completions.create({\n  model: \"minimax-m2.5\",\n  messages: [{ role: \"user\", content: \"写一首五言绝句\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  const delta = chunk.choices[0]?.delta?.content;\n  if (delta) process.stdout.write(delta);\n}\n```\n:::\n:::code-tab{label=\"Go\"}\n```go\n\u002F\u002F 仅依赖标准库\npackage main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"encoding\u002Fjson\"\n\t\"fmt\"\n\t\"net\u002Fhttp\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tpayload := []byte(`{\n\t\t\"model\": \"minimax-m2.5\",\n\t\t\"messages\": [{\"role\": \"user\", \"content\": \"写一首五言绝句\"}],\n\t\t\"stream\": true\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\tscanner := bufio.NewScanner(resp.Body)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif !strings.HasPrefix(line, \"data: \") {\n\t\t\tcontinue\n\t\t}\n\t\tdata := strings.TrimPrefix(line, \"data: \")\n\t\tif data == \"[DONE]\" {\n\t\t\tbreak\n\t\t}\n\t\tvar chunk struct {\n\t\t\tChoices []struct {\n\t\t\t\tDelta struct {\n\t\t\t\t\tContent string `json:\"content\"`\n\t\t\t\t} `json:\"delta\"`\n\t\t\t} `json:\"choices\"`\n\t\t}\n\t\tif err := json.Unmarshal([]byte(data), &chunk); err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif len(chunk.Choices) > 0 {\n\t\t\tfmt.Print(chunk.Choices[0].Delta.Content)\n\t\t}\n\t}\n}\n```\n:::\n::\n\n## 多模态\n\n图片、音频等多模态输入格式见[多模态输入](\u002Fzh-cn\u002Fdocs\u002Fmodels\u002Fchat\u002Fmultimodal)。\n",[],{"title":103,"description":1175},"yeK390plW2VXK12B_RPkR0MZa997bsS3VLVSHXvnyhA",{"found":638,"operationId":1183,"summary":337,"description":528,"method":344,"path":345,"publiclyDiscoverable":638,"security":1184,"parameters":1188,"requestBody":1189,"responses":1200},"createOpenAIResponse",{"schemes":1185,"optional":43},[1186,1187],"BearerAuth","ApiKeyAuth",[],{"present":638,"required":638,"description":528,"contentType":1190,"type":1191,"fields":1192,"variants":1199},"application\u002Fjson","ResponsesRequest",[1193,1196,1198],{"name":1194,"type":1195,"required":638,"description":528},"input","string | array\u003CFreeFormObject>",{"name":375,"type":378,"required":638,"description":1197},"从模型广场选择标注支持 OpenAI Responses 的模型并复制调用名。",{"name":424,"type":427,"required":43,"description":528,"defaultValue":433},[],[1201,1206],{"status":1202,"description":1203,"contentType":1190,"type":1204,"fields":1205},"200","Responses JSON 或 SSE 响应。","FreeFormObject",[],{"status":1207,"description":1208,"contentType":1190,"type":1209,"fields":1210},"default","OpenAI 兼容错误。","OpenAIError",[1211,1214,1217,1219],{"name":1212,"type":1213,"required":638,"description":528},"error","object",{"name":1215,"type":1216,"required":43,"description":528},"error.code","string | integer",{"name":1218,"type":378,"required":638,"description":528},"error.message",{"name":1220,"type":378,"required":43,"description":528},"error.type"]