[{"data":1,"prerenderedAt":703},["ShallowReactive",2],{"navigation_docs_zh":3,"-zh-api-chat":79,"-zh-api-chat-surround":698},[4,25,41,58],{"title":5,"path":6,"stem":7,"children":8,"page":24},"快速开始","/zh/quick-start","zh/1.quick-start",[9,12,16,20],{"title":5,"path":10,"stem":11},"/zh/quick-start/overview","zh/1.quick-start/0.overview",{"title":13,"path":14,"stem":15},"安装与下载","/zh/quick-start/install","zh/1.quick-start/1.install",{"title":17,"path":18,"stem":19},"首次启动与第一条对话","/zh/quick-start/first-run","zh/1.quick-start/2.first-run",{"title":21,"path":22,"stem":23},"macOS 安装指南","/zh/quick-start/macos-install","zh/1.quick-start/3.macos-install",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"使用手册","/zh/manual","zh/2.manual",[30,33,37],{"title":26,"path":31,"stem":32},"/zh/manual/overview","zh/2.manual/0.overview",{"title":34,"path":35,"stem":36},"供应商与模型配置","/zh/manual/providers","zh/2.manual/1.providers",{"title":38,"path":39,"stem":40},"会话与上下文管理","/zh/manual/chat-and-context","zh/2.manual/2.chat-and-context",{"title":42,"path":43,"stem":44,"children":45,"page":24},"常见问题","/zh/faq","zh/3.faq",[46,50,54],{"title":47,"path":48,"stem":49},"常见问题（FAQ）","/zh/faq/overview","zh/3.faq/0.overview",{"title":51,"path":52,"stem":53},"隐私政策","/zh/faq/privacy-policy","zh/3.faq/1.privacy-policy",{"title":55,"path":56,"stem":57},"账号删除说明","/zh/faq/account-deletion","zh/3.faq/2.account-deletion",{"title":59,"path":60,"stem":61,"children":62,"page":24},"开发者","/zh/api","zh/4.api",[63,67,71,75],{"title":64,"path":65,"stem":66},"开发者 API","/zh/api/overview","zh/4.api/0.overview",{"title":68,"path":69,"stem":70},"对话与向量","/zh/api/chat","zh/4.api/1.chat",{"title":72,"path":73,"stem":74},"生图与视频","/zh/api/images","zh/4.api/2.images",{"title":76,"path":77,"stem":78},"错误、限额与计费","/zh/api/errors","zh/4.api/3.errors",{"id":80,"title":68,"body":81,"description":691,"extension":692,"links":693,"meta":694,"navigation":695,"path":69,"seo":696,"stem":70,"__hash__":697},"docs_zh/zh/4.api/1.chat.md",{"type":82,"value":83,"toc":682},"minimark",[84,89,109,221,225,232,274,286,289,292,485,497,500,507,511,524,575,582,586,595,659,678],[85,86,88],"h2",{"id":87},"chat-completions","Chat Completions",[90,91,92,96,97,100,101,104,105,108],"p",{},[93,94,95],"code",{},"POST /v1/chat/completions","，与 OpenAI 的同名接口完全一致。请求体原样转发给上游模型，\n所以工具调用（",[93,98,99],{},"tools","）、视觉输入、",[93,102,103],{},"temperature","、",[93,106,107],{},"max_tokens"," 这些参数按你用的模型本身支持\n的写就行。",[110,111,116],"pre",{"className":112,"code":113,"language":114,"meta":115,"style":115},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https://bothub-api.bookab.info/v1/chat/completions \\\n  -H \"Authorization: Bearer $BOTHUB_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-5.4\",\n    \"messages\": [\n      {\"role\": \"system\", \"content\": \"你是一个简洁的助手。\"},\n      {\"role\": \"user\", \"content\": \"用一句话解释什么是向量数据库\"}\n    ]\n  }'\n","bash","",[93,117,118,135,156,170,182,188,194,200,206,212],{"__ignoreMap":115},[119,120,123,127,131],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sBMFI","curl",[119,128,130],{"class":129},"sfazB"," https://bothub-api.bookab.info/v1/chat/completions",[119,132,134],{"class":133},"sTEyZ"," \\\n",[119,136,138,141,145,148,151,154],{"class":121,"line":137},2,[119,139,140],{"class":129},"  -H",[119,142,144],{"class":143},"sMK4o"," \"",[119,146,147],{"class":129},"Authorization: Bearer ",[119,149,150],{"class":133},"$BOTHUB_API_KEY",[119,152,153],{"class":143},"\"",[119,155,134],{"class":133},[119,157,159,161,163,166,168],{"class":121,"line":158},3,[119,160,140],{"class":129},[119,162,144],{"class":143},[119,164,165],{"class":129},"Content-Type: application/json",[119,167,153],{"class":143},[119,169,134],{"class":133},[119,171,173,176,179],{"class":121,"line":172},4,[119,174,175],{"class":129},"  -d",[119,177,178],{"class":143}," '",[119,180,181],{"class":129},"{\n",[119,183,185],{"class":121,"line":184},5,[119,186,187],{"class":129},"    \"model\": \"gpt-5.4\",\n",[119,189,191],{"class":121,"line":190},6,[119,192,193],{"class":129},"    \"messages\": [\n",[119,195,197],{"class":121,"line":196},7,[119,198,199],{"class":129},"      {\"role\": \"system\", \"content\": \"你是一个简洁的助手。\"},\n",[119,201,203],{"class":121,"line":202},8,[119,204,205],{"class":129},"      {\"role\": \"user\", \"content\": \"用一句话解释什么是向量数据库\"}\n",[119,207,209],{"class":121,"line":208},9,[119,210,211],{"class":129},"    ]\n",[119,213,215,218],{"class":121,"line":214},10,[119,216,217],{"class":129},"  }",[119,219,220],{"class":143},"'\n",[222,223,224],"h3",{"id":224},"流式",[90,226,227,228,231],{},"带 ",[93,229,230],{},"\"stream\": true"," 就是标准的 SSE：",[110,233,237],{"className":234,"code":235,"language":236,"meta":115,"style":115},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","stream = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"写一首短诗\"}],\n    stream=True,\n)\nfor chunk in stream:\n    print(chunk.choices[0].delta.content or \"\", end=\"\")\n","python",[93,238,239,244,249,254,259,264,269],{"__ignoreMap":115},[119,240,241],{"class":121,"line":122},[119,242,243],{},"stream = client.chat.completions.create(\n",[119,245,246],{"class":121,"line":137},[119,247,248],{},"    model=\"gpt-5.4\",\n",[119,250,251],{"class":121,"line":158},[119,252,253],{},"    messages=[{\"role\": \"user\", \"content\": \"写一首短诗\"}],\n",[119,255,256],{"class":121,"line":172},[119,257,258],{},"    stream=True,\n",[119,260,261],{"class":121,"line":184},[119,262,263],{},")\n",[119,265,266],{"class":121,"line":190},[119,267,268],{},"for chunk in stream:\n",[119,270,271],{"class":121,"line":196},[119,272,273],{},"    print(chunk.choices[0].delta.content or \"\", end=\"\")\n",[275,276,277,278,281,282,285],"note",{},"流式响应里的用量统计（",[93,279,280],{},"usage","）会在最后一个数据块带上，不需要你自己加\n",[93,283,284],{},"stream_options","——服务端会补。",[222,287,288],{"id":288},"视觉输入",[90,290,291],{},"模型支持的话，按 OpenAI 的格式传图即可：",[110,293,297],{"className":294,"code":295,"language":296,"meta":115,"style":115},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [{\n    \"role\": \"user\",\n    \"content\": [\n      {\"type\": \"text\", \"text\": \"这张图里有什么？\"},\n      {\"type\": \"image_url\", \"image_url\": {\"url\": \"https://example.com/cat.jpg\"}}\n    ]\n  }]\n}\n","json",[93,298,299,303,327,341,362,376,419,471,475,480],{"__ignoreMap":115},[119,300,301],{"class":121,"line":122},[119,302,181],{"class":143},[119,304,305,308,312,314,317,319,322,324],{"class":121,"line":137},[119,306,307],{"class":143},"  \"",[119,309,311],{"class":310},"spNyl","model",[119,313,153],{"class":143},[119,315,316],{"class":143},":",[119,318,144],{"class":143},[119,320,321],{"class":129},"gpt-5.4",[119,323,153],{"class":143},[119,325,326],{"class":143},",\n",[119,328,329,331,334,336,338],{"class":121,"line":158},[119,330,307],{"class":143},[119,332,333],{"class":310},"messages",[119,335,153],{"class":143},[119,337,316],{"class":143},[119,339,340],{"class":143}," [{\n",[119,342,343,346,349,351,353,355,358,360],{"class":121,"line":172},[119,344,345],{"class":143},"    \"",[119,347,348],{"class":125},"role",[119,350,153],{"class":143},[119,352,316],{"class":143},[119,354,144],{"class":143},[119,356,357],{"class":129},"user",[119,359,153],{"class":143},[119,361,326],{"class":143},[119,363,364,366,369,371,373],{"class":121,"line":184},[119,365,345],{"class":143},[119,367,368],{"class":125},"content",[119,370,153],{"class":143},[119,372,316],{"class":143},[119,374,375],{"class":143}," [\n",[119,377,378,381,383,387,389,391,393,396,398,401,403,405,407,409,411,414,416],{"class":121,"line":190},[119,379,380],{"class":143},"      {",[119,382,153],{"class":143},[119,384,386],{"class":385},"sbssI","type",[119,388,153],{"class":143},[119,390,316],{"class":143},[119,392,144],{"class":143},[119,394,395],{"class":129},"text",[119,397,153],{"class":143},[119,399,400],{"class":143},",",[119,402,144],{"class":143},[119,404,395],{"class":385},[119,406,153],{"class":143},[119,408,316],{"class":143},[119,410,144],{"class":143},[119,412,413],{"class":129},"这张图里有什么？",[119,415,153],{"class":143},[119,417,418],{"class":143},"},\n",[119,420,421,423,425,427,429,431,433,436,438,440,442,444,446,448,451,453,457,459,461,463,466,468],{"class":121,"line":196},[119,422,380],{"class":143},[119,424,153],{"class":143},[119,426,386],{"class":385},[119,428,153],{"class":143},[119,430,316],{"class":143},[119,432,144],{"class":143},[119,434,435],{"class":129},"image_url",[119,437,153],{"class":143},[119,439,400],{"class":143},[119,441,144],{"class":143},[119,443,435],{"class":385},[119,445,153],{"class":143},[119,447,316],{"class":143},[119,449,450],{"class":143}," {",[119,452,153],{"class":143},[119,454,456],{"class":455},"swJcz","url",[119,458,153],{"class":143},[119,460,316],{"class":143},[119,462,144],{"class":143},[119,464,465],{"class":129},"https://example.com/cat.jpg",[119,467,153],{"class":143},[119,469,470],{"class":143},"}}\n",[119,472,473],{"class":121,"line":202},[119,474,211],{"class":143},[119,476,477],{"class":121,"line":208},[119,478,479],{"class":143},"  }]\n",[119,481,482],{"class":121,"line":214},[119,483,484],{"class":143},"}\n",[90,486,487,488,492,493,496],{},"图片地址必须是",[489,490,491],"strong",{},"上游能直接读到的","：公网 URL 或 ",[93,494,495],{},"data:"," URI。本地文件路径不行。",[222,498,499],{"id":499},"消息条数上限",[90,501,502,503,506],{},"单个请求最多 500 条消息。一个反复调用工具的长会话很容易超过它——这时候要自己做历史压缩，\n而不是一直往后追加。超限会返回 400，",[93,504,505],{},"message"," 里会写明是哪个字段。",[85,508,510],{"id":509},"responses","Responses",[90,512,513,516,517,520,521,523],{},[93,514,515],{},"POST /v1/responses","，OpenAI 的新版协议。用 ",[93,518,519],{},"input"," 代替 ",[93,522,333],{},"：",[110,525,527],{"className":112,"code":526,"language":114,"meta":115,"style":115},"curl https://bothub-api.bookab.info/v1/responses \\\n  -H \"Authorization: Bearer $BOTHUB_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"gpt-5.4\", \"input\": \"你好\"}'\n",[93,528,529,538,552,564],{"__ignoreMap":115},[119,530,531,533,536],{"class":121,"line":122},[119,532,126],{"class":125},[119,534,535],{"class":129}," https://bothub-api.bookab.info/v1/responses",[119,537,134],{"class":133},[119,539,540,542,544,546,548,550],{"class":121,"line":137},[119,541,140],{"class":129},[119,543,144],{"class":143},[119,545,147],{"class":129},[119,547,150],{"class":133},[119,549,153],{"class":143},[119,551,134],{"class":133},[119,553,554,556,558,560,562],{"class":121,"line":158},[119,555,140],{"class":129},[119,557,144],{"class":143},[119,559,165],{"class":129},[119,561,153],{"class":143},[119,563,134],{"class":133},[119,565,566,568,570,573],{"class":121,"line":172},[119,567,175],{"class":129},[119,569,178],{"class":143},[119,571,572],{"class":129},"{\"model\": \"gpt-5.4\", \"input\": \"你好\"}",[119,574,220],{"class":143},[275,576,577,578,581],{},"BotHub 转发时会强制 ",[93,579,580],{},"store: false","——我们不让上游厂商持久化你的 prompt。",[85,583,585],{"id":584},"embeddings","Embeddings",[90,587,588,591,592,594],{},[93,589,590],{},"POST /v1/embeddings","，",[93,593,519],{}," 可以是一个字符串，也可以是最多 256 个字符串的数组。",[110,596,598],{"className":112,"code":597,"language":114,"meta":115,"style":115},"curl https://bothub-api.bookab.info/v1/embeddings \\\n  -H \"Authorization: Bearer $BOTHUB_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"text-embedding-4\",\n    \"input\": [\"第一段文本\", \"第二段文本\"]\n  }'\n",[93,599,600,609,623,635,643,648,653],{"__ignoreMap":115},[119,601,602,604,607],{"class":121,"line":122},[119,603,126],{"class":125},[119,605,606],{"class":129}," https://bothub-api.bookab.info/v1/embeddings",[119,608,134],{"class":133},[119,610,611,613,615,617,619,621],{"class":121,"line":137},[119,612,140],{"class":129},[119,614,144],{"class":143},[119,616,147],{"class":129},[119,618,150],{"class":133},[119,620,153],{"class":143},[119,622,134],{"class":133},[119,624,625,627,629,631,633],{"class":121,"line":158},[119,626,140],{"class":129},[119,628,144],{"class":143},[119,630,165],{"class":129},[119,632,153],{"class":143},[119,634,134],{"class":133},[119,636,637,639,641],{"class":121,"line":172},[119,638,175],{"class":129},[119,640,178],{"class":143},[119,642,181],{"class":129},[119,644,645],{"class":121,"line":184},[119,646,647],{"class":129},"    \"model\": \"text-embedding-4\",\n",[119,649,650],{"class":121,"line":190},[119,651,652],{"class":129},"    \"input\": [\"第一段文本\", \"第二段文本\"]\n",[119,654,655,657],{"class":121,"line":196},[119,656,217],{"class":129},[119,658,220],{"class":143},[90,660,661,662,665,666,669,670,673,674,677],{},"支持 ",[93,663,664],{},"dimensions"," 和 ",[93,667,668],{},"encoding_format","（",[93,671,672],{},"float"," 或 ",[93,675,676],{},"base64","），按模型本身的能力传。",[679,680,681],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":115,"searchDepth":137,"depth":137,"links":683},[684,689,690],{"id":87,"depth":137,"text":88,"children":685},[686,687,688],{"id":224,"depth":158,"text":224},{"id":288,"depth":158,"text":288},{"id":499,"depth":158,"text":499},{"id":509,"depth":137,"text":510},{"id":584,"depth":137,"text":585},"Chat Completions、Responses 与 Embeddings 接口。","md",null,{},true,{"title":68,"description":691},"9R0Dj5eFFPybU1ASUcWLN2vHhHnEaMdmu5wUQU25dW4",[699,701],{"title":64,"path":65,"stem":66,"description":700,"children":-1},"用 BotHub 账户余额，从你自己的程序里调用对话、生图、视频和向量接口。",{"title":72,"path":73,"stem":74,"description":702,"children":-1},"同步拿图、异步任务、图片编辑与视频生成。",1790522452945]