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