From 13b2e9519b6e35596a1ee2a27be7cfaad88ca4ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 07:56:33 +0000 Subject: [PATCH] =?UTF-8?q?[AI]=20docs:=20=E8=87=AA=E5=8A=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20OpenAI=20=E4=B8=AD=E6=96=87=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/.translation-manifest.json | 430 +++++++++--------- docs/zh/api/docs/assistants/migration.md | 130 ++++-- docs/zh/api/docs/guides/advanced-usage.md | 86 ++-- docs/zh/api/docs/guides/background.md | 185 +++++++- docs/zh/api/docs/guides/code-generation.md | 62 ++- docs/zh/api/docs/guides/compaction.md | 159 +++++-- docs/zh/api/docs/guides/content-provenance.md | 189 ++++---- docs/zh/api/docs/guides/flex-processing.md | 52 ++- .../api/docs/guides/image-cost-calculator.md | 20 + .../api/docs/guides/latest-model/gpt-5.6.md | 186 ++++---- docs/zh/api/docs/guides/mutual-tls.md | 246 ++++++++++ docs/zh/api/docs/guides/predicted-outputs.md | 137 ++++-- .../prompting/migrate-from-prompt-object.md | 86 +++- docs/zh/api/docs/guides/realtime-sip.md | 205 ++++++--- docs/zh/api/docs/guides/realtime-websocket.md | 48 +- .../api/docs/guides/safety-best-practices.md | 99 ++-- docs/zh/api/docs/guides/safety-checks.md | 74 ++- .../zh/api/docs/guides/streaming-responses.md | 40 +- docs/zh/api/docs/guides/tools-apply-patch.md | 151 +++--- docs/zh/api/docs/guides/webhooks.md | 174 +++++-- .../oracle-cloud.md | 204 +++++++-- docs/zh/api/docs/libraries.md | 128 +++--- docs/zh/api/docs/models.md | 180 ++++---- docs/zh/api/docs/models/all.md | 160 +++---- .../resources/completions/methods/create.md | 153 ++++--- .../subresources/roles/methods/delete.md | 10 +- .../users/subresources/roles/methods/list.md | 4 +- docs/zh/api/reference/resources/projects.md | 8 +- .../resources/projects/subresources/groups.md | 6 +- .../subresources/roles/methods/create.md | 6 +- .../subresources/roles/methods/delete.md | 6 +- .../groups/subresources/roles/methods/list.md | 6 +- .../subresources/roles/methods/create.md | 6 +- .../subresources/roles/methods/delete.md | 8 +- .../subresources/roles/methods/list.md | 8 +- .../subresources/roles/methods/update.md | 6 +- .../resources/projects/subresources/users.md | 6 +- .../subresources/roles/methods/create.md | 4 +- .../subresources/roles/methods/delete.md | 6 +- .../users/subresources/roles/methods/list.md | 6 +- .../subresources/calls/methods/create.md | 4 +- .../subresources/calls/methods/hangup.md | 4 +- .../subresources/calls/methods/refer.md | 8 +- .../subresources/calls/methods/reject.md | 10 +- .../resources/responses/methods/delete.md | 4 +- docs/zh/api/reference/resources/uploads.md | 198 ++++---- .../resources/uploads/methods/cancel.md | 28 +- .../resources/uploads/methods/create.md | 68 +-- .../subresources/parts/methods/create.md | 20 +- .../resources/vector_stores/methods/create.md | 62 +-- .../resources/vector_stores/methods/delete.md | 6 +- .../resources/vector_stores/methods/list.md | 34 +- .../vector_stores/methods/retrieve.md | 30 +- .../resources/vector_stores/methods/search.md | 42 +- .../resources/vector_stores/methods/update.md | 48 +- .../subresources/file_batches.md | 130 +++--- .../file_batches/methods/cancel.md | 16 +- .../file_batches/methods/create.md | 62 +-- .../file_batches/methods/list_files.md | 46 +- .../file_batches/methods/retrieve.md | 18 +- .../subresources/files/methods/content.md | 10 +- .../subresources/files/methods/create.md | 64 +-- .../subresources/files/methods/delete.md | 6 +- .../subresources/files/methods/list.md | 50 +- .../subresources/files/methods/retrieve.md | 42 +- .../subresources/files/methods/update.md | 46 +- .../resources/videos/methods/create.md | 36 +- .../resources/videos/methods/delete.md | 14 +- .../resources/videos/methods/list.md | 40 +- .../resources/videos/methods/retrieve.md | 22 +- .../resources/webhooks/methods/unwrap.md | 4 +- 71 files changed, 3013 insertions(+), 1839 deletions(-) create mode 100644 docs/zh/api/docs/guides/image-cost-calculator.md create mode 100644 docs/zh/api/docs/guides/mutual-tls.md diff --git a/docs/zh/.translation-manifest.json b/docs/zh/.translation-manifest.json index ce425b8..c3c7a3e 100644 --- a/docs/zh/.translation-manifest.json +++ b/docs/zh/.translation-manifest.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-08-30T15:00:27.959Z", + "generatedAt": "2026-08-31T07:56:31.122Z", "pages": { "https://developers.openai.com/api/docs/actions/actions-library.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -85,11 +85,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/assistants/migration.md", - "sourceSha256": "0d866515c0d406e6e5a402baad1fe0ad50c10369a5929a47b74e60e487b77775", + "sourceSha256": "19c12ad46bff4e6f7cabcdf3dc14224a4e95fb4941c5f3f835aef02040e3b4b6", "sourceUrl": "https://developers.openai.com/api/docs/assistants/migration.md", "targetPath": "docs/zh/api/docs/assistants/migration.md", - "targetSha256": "1564b8272b45382dad0fbd983120e3160161f8e811913b17107e83e233c394e3", - "translatedAt": "2026-08-29T16:53:47.607Z" + "targetSha256": "2940853dc0068a14709306a83da46189ac245dd3d61b5dcfeecc44d11e29a48b", + "translatedAt": "2026-08-31T07:20:04.685Z" }, "https://developers.openai.com/api/docs/assistants/tools.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -195,11 +195,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/advanced-usage.md", - "sourceSha256": "a696685d4d6359c33739f40e240f54f319c8d08f83fbd73778a705aa31d1313b", + "sourceSha256": "83ab62ea9f48844a3a2ca9738eb7330733585bebed9bfa367b41590da398f93f", "sourceUrl": "https://developers.openai.com/api/docs/guides/advanced-usage.md", "targetPath": "docs/zh/api/docs/guides/advanced-usage.md", - "targetSha256": "784aaa551ac8c3500eaaaa7e1e97b6e5d072184ccc4226e244424901940e36c1", - "translatedAt": "2026-08-29T16:37:43.443Z" + "targetSha256": "990e50c4bbee42daeb3868df3023540b745ba19db9498ab61bc47fd76b60e715", + "translatedAt": "2026-08-31T07:10:55.082Z" }, "https://developers.openai.com/api/docs/guides/agent-builder-safety.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -365,11 +365,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/background.md", - "sourceSha256": "8e92a07ac95cbd20c8306bbe762fa314c202bf18ef59a51f43a029bb4529a9dd", + "sourceSha256": "85c1ac845ec392362fe3a57b367331190bac520c5dd3083aca59ba1b32d2e245", "sourceUrl": "https://developers.openai.com/api/docs/guides/background.md", "targetPath": "docs/zh/api/docs/guides/background.md", - "targetSha256": "2acb2522e7bc804f6762405398f47beb6d5ed05c7028de6b05466a988440c158", - "translatedAt": "2026-08-27T07:09:24.893Z" + "targetSha256": "602b3b6d4a28e4f28e4b459bcd43f75cc3a67382d1ebbb1a126c5fe24b7c87cc", + "translatedAt": "2026-08-31T07:03:45.912Z" }, "https://developers.openai.com/api/docs/guides/batch.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -435,21 +435,21 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/code-generation.md", - "sourceSha256": "27805a76ea9f0ee0a3a1cc8d3586e5b045841b5db2ba6083dd043cc4ae502a3f", + "sourceSha256": "adcf223025d8065b53b40477856a0034c3eaa0cb6669de2dce952603146689f1", "sourceUrl": "https://developers.openai.com/api/docs/guides/code-generation.md", "targetPath": "docs/zh/api/docs/guides/code-generation.md", - "targetSha256": "16f48c15df4e029256d917618f6c78f1146c839edc602ccfab835c9991cfa007", - "translatedAt": "2026-08-29T16:24:16.358Z" + "targetSha256": "259d6d2f2417f7a9fbc65e4047f2f2001d52275d59c75e471468abd4a179d169", + "translatedAt": "2026-08-31T07:04:59.620Z" }, "https://developers.openai.com/api/docs/guides/compaction.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/compaction.md", - "sourceSha256": "1b36d27be4df9b975bbce0d172fe2ffc2994a6fd874cf47f879088e3f6e98a2e", + "sourceSha256": "45e443e2aeba120c9bd1e3428dfc818429a54f955e190589ebe6e3288119c15e", "sourceUrl": "https://developers.openai.com/api/docs/guides/compaction.md", "targetPath": "docs/zh/api/docs/guides/compaction.md", - "targetSha256": "78aaf5cce23b6381b26b2265f1f932f6a31ddc8d9fec916430748e7356bcbe86", - "translatedAt": "2026-08-29T17:07:09.123Z" + "targetSha256": "f62bfc669965b2b3dc7484d3753110914ea577e7b17210dbe78bd528222bdf36", + "translatedAt": "2026-08-31T07:21:02.689Z" }, "https://developers.openai.com/api/docs/guides/completions.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -465,11 +465,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/content-provenance.md", - "sourceSha256": "368645d44bb8c2a7c28d5b1c40efe236db635bdead823787c900ed18bde2a204", + "sourceSha256": "4cc0eda35cbe96cee0d5105d4f00b5208bc226dbb2b070ebf7e2e2ab3f1c1db9", "sourceUrl": "https://developers.openai.com/api/docs/guides/content-provenance.md", "targetPath": "docs/zh/api/docs/guides/content-provenance.md", - "targetSha256": "9feb333864b8fbb88c0d62ad304bb9aa99fa7af3e67770e9e6a12de31cd09b01", - "translatedAt": "2026-08-29T16:42:12.911Z" + "targetSha256": "4e89d640968981f2015eae3de90359e2065d240bb95e02265dbe6696e2284830", + "translatedAt": "2026-08-31T07:15:53.123Z" }, "https://developers.openai.com/api/docs/guides/conversation-state.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -645,11 +645,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/flex-processing.md", - "sourceSha256": "b5a4ac92cdd1cfcd31d923c2516a876f4bdf5ef02517932c7fac6608b4ca9cc2", + "sourceSha256": "1f0c0e736760fdc63b12f61fe0d6e4e33c8acae1ef5c9d2e7498d61de6e14d85", "sourceUrl": "https://developers.openai.com/api/docs/guides/flex-processing.md", "targetPath": "docs/zh/api/docs/guides/flex-processing.md", - "targetSha256": "92a65dc977c045dd6415da6fc7e8f12b5bb248fb56ce6bdb0d8ecf5d488c9032", - "translatedAt": "2026-08-29T17:14:50.729Z" + "targetSha256": "c3332fe456f4a4475d6530cdada9740843c332bc13204c48c6eec06c494eda16", + "translatedAt": "2026-08-31T07:21:45.227Z" }, "https://developers.openai.com/api/docs/guides/frontend-prompt.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -681,6 +681,16 @@ "targetSha256": "1a091e22e3525b090471d9d0a0e0c8356eae29a85051479fdec9e518286de31b", "translatedAt": "2026-08-26T18:08:18.613Z" }, + "https://developers.openai.com/api/docs/guides/image-cost-calculator.md": { + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", + "reviewStatus": "machine", + "sourcePath": "docs/en/api/docs/guides/image-cost-calculator.md", + "sourceSha256": "a2928d5e14093aa2215a2fafd810ddaaa954d041a0baab3018c68c69475ee30f", + "sourceUrl": "https://developers.openai.com/api/docs/guides/image-cost-calculator.md", + "targetPath": "docs/zh/api/docs/guides/image-cost-calculator.md", + "targetSha256": "289ae8a92b7e2679e4f9dcdab70ad12bfaaa8bdc8a22e25accf6f239909e866f", + "translatedAt": "2026-08-31T07:52:36.101Z" + }, "https://developers.openai.com/api/docs/guides/image-generation.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", "reviewStatus": "machine", @@ -795,11 +805,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/latest-model/gpt-5.6.md", - "sourceSha256": "7591e641abc3cb124b2173843a03d40ea05ee421c8a036f04dda44c79188953e", + "sourceSha256": "f14333e97bbd94dfec6b622beda1ac76799b426295fbafb4e6874ba91e080c4e", "sourceUrl": "https://developers.openai.com/api/docs/guides/latest-model/gpt-5.6.md", "targetPath": "docs/zh/api/docs/guides/latest-model/gpt-5.6.md", - "targetSha256": "9b3d7bc1e282ec1c0fdbb9461c16e242a9a7c35e079c30e39643950fdbba8265", - "translatedAt": "2026-08-29T16:45:48.685Z" + "targetSha256": "b6501c26f6c8121358e0fc65e3dc73d1e05947df61d98758eb54daf1a32bec1d", + "translatedAt": "2026-08-31T07:18:55.533Z" }, "https://developers.openai.com/api/docs/guides/latest-model/gpt-5.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -851,6 +861,16 @@ "targetSha256": "fdd7ccdc507e5e9c6760b6a44a3d410fe86c39f63830e1e985aee71ada9a38cc", "translatedAt": "2026-08-26T18:35:13.076Z" }, + "https://developers.openai.com/api/docs/guides/mutual-tls.md": { + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", + "reviewStatus": "machine", + "sourcePath": "docs/en/api/docs/guides/mutual-tls.md", + "sourceSha256": "0666a292a9b13c1dc959efb8a7f9119e55344e2c412b17cd6ff079db83118273", + "sourceUrl": "https://developers.openai.com/api/docs/guides/mutual-tls.md", + "targetPath": "docs/zh/api/docs/guides/mutual-tls.md", + "targetSha256": "807c14a12deb1e2f820ed2edbd5cb9eec6dfe35802df44fa363d81487d071bd0", + "translatedAt": "2026-08-31T07:56:31.122Z" + }, "https://developers.openai.com/api/docs/guides/node-reference.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", @@ -875,11 +895,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/predicted-outputs.md", - "sourceSha256": "674529a55d94fce022f09aa5bb27edd328f4dd0e11c1f26f4ba15b5504a23ced", + "sourceSha256": "167b2d24c560b3f28e1875b733d7f71d589edbd71f9f6e97bb5ffb3ac025a3dc", "sourceUrl": "https://developers.openai.com/api/docs/guides/predicted-outputs.md", "targetPath": "docs/zh/api/docs/guides/predicted-outputs.md", - "targetSha256": "a2e90f90a041df6b78deb40f6a03e43465558d59f7c89821842d5a085b52bf12", - "translatedAt": "2026-08-29T17:18:27.015Z" + "targetSha256": "bf9a14e1ed3703be9ad3410abfcbf096003dd1e7b92a935a7c09c199103feef7", + "translatedAt": "2026-08-31T07:22:24.019Z" }, "https://developers.openai.com/api/docs/guides/private-link.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -965,11 +985,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/prompting/migrate-from-prompt-object.md", - "sourceSha256": "8e19672fa070abc30cb0e71d73b6be030b98ac2ea984844f619c22e7614a5464", + "sourceSha256": "db63cd1048d1c71d07d0245e4e15aa135e1ff4e7a34d125a57e7b861f565e727", "sourceUrl": "https://developers.openai.com/api/docs/guides/prompting/migrate-from-prompt-object.md", "targetPath": "docs/zh/api/docs/guides/prompting/migrate-from-prompt-object.md", - "targetSha256": "cfb915a901dbabe65fac8a8d14928c82f82693a90b7414f7d7abbf3cb3fd1699", - "translatedAt": "2026-08-29T17:21:18.619Z" + "targetSha256": "f9dd7967c1daa8faaf4cda3bda2d08e2a6cb627917e870c65e9ef8d9e3a58ccb", + "translatedAt": "2026-08-31T07:23:28.484Z" }, "https://developers.openai.com/api/docs/guides/rate-limits.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1045,11 +1065,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-sip.md", - "sourceSha256": "8feb3719c31f7e25e3777d60ed197acafdc41de64aaae76389c84a1562753379", + "sourceSha256": "8973214ec8a2040e1a6b3ae4709bcaae5ba032c5602d2c9ab51ef110bee97540", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-sip.md", "targetPath": "docs/zh/api/docs/guides/realtime-sip.md", - "targetSha256": "7c29a0c2e2ead18b97f99f47d4c490a332eb46a83f367c0d021ea9fb76a7f87d", - "translatedAt": "2026-08-29T17:25:10.602Z" + "targetSha256": "51e9222c57c183676546d9888b01ed2e7a1604461e2716b57c602facee162888", + "translatedAt": "2026-08-31T07:25:32.146Z" }, "https://developers.openai.com/api/docs/guides/realtime-transcription.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1095,11 +1115,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-websocket.md", - "sourceSha256": "103b6df2ca0e06b84748971cfb50d28d98826e881e73318343d51fab2d7c5d71", + "sourceSha256": "49c75279e63841979d5916797bbc21444defbbe01ded41ae922bdb636cfde332", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-websocket.md", "targetPath": "docs/zh/api/docs/guides/realtime-websocket.md", - "targetSha256": "28bc1d5b284e234e0f3d11af57f6e45e6edf93a06abb4448c3cb4ff5f59d499f", - "translatedAt": "2026-08-29T16:16:48.250Z" + "targetSha256": "c42461502d167817f074e42241d3eeccce72364156ad757af3fac2aa7a9eff46", + "translatedAt": "2026-08-31T07:04:25.766Z" }, "https://developers.openai.com/api/docs/guides/realtime.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1185,21 +1205,21 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/safety-best-practices.md", - "sourceSha256": "9d3783fc8fc9d6b3df7e5b4c7804c70cc10d76625d9db6159f3a61822c46edac", + "sourceSha256": "ee158d926b4ef276527909bf4b79f19de69acb5b53e7ba2d2bb7fa2ceccf9daf", "sourceUrl": "https://developers.openai.com/api/docs/guides/safety-best-practices.md", "targetPath": "docs/zh/api/docs/guides/safety-best-practices.md", - "targetSha256": "fe0af60c7726ebad7fd6ac11e269798901f7bcca8ff732379783b91ba7ef9691", - "translatedAt": "2026-08-29T16:33:02.007Z" + "targetSha256": "54daaf2084334f71c6c84587a662537dd25e76a6499ca9240faeaf841d148c4a", + "translatedAt": "2026-08-31T07:06:59.831Z" }, "https://developers.openai.com/api/docs/guides/safety-checks.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/safety-checks.md", - "sourceSha256": "4d7de34e78a1b0996bcb2ac6d41bd0b318f08d819d1d703cd79cc9b7859e1380", + "sourceSha256": "76f1704fb7f77e2561b1bac8bb76d2346129c37137deb4b657122665f1337b50", "sourceUrl": "https://developers.openai.com/api/docs/guides/safety-checks.md", "targetPath": "docs/zh/api/docs/guides/safety-checks.md", - "targetSha256": "addc17b4303a6f4534a9e645e816e6dc19bf16efe4aa668eda6df2e7c6805d0d", - "translatedAt": "2026-08-29T16:33:47.479Z" + "targetSha256": "8654abb8017b96cb3766fe9b2cc05ff1af6c264a649eb5460eed8c01be15b041", + "translatedAt": "2026-08-31T07:08:14.031Z" }, "https://developers.openai.com/api/docs/guides/safety-checks/cybersecurity.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1255,11 +1275,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/streaming-responses.md", - "sourceSha256": "e5cd3c79f5e1832e6fc4ef30334efb88e09015fcd0778f3ce2c30ccd2cd76aac", + "sourceSha256": "41abcec6c6be2e0c0603b06dbeed9f3276bb330aec49e7c9e5be664d02c2c2e3", "sourceUrl": "https://developers.openai.com/api/docs/guides/streaming-responses.md", "targetPath": "docs/zh/api/docs/guides/streaming-responses.md", - "targetSha256": "5ee37324b3ffb3435a6110ff473aab0c5fbcf57124a87c79f311b7f7207cc6ad", - "translatedAt": "2026-08-27T07:08:50.144Z" + "targetSha256": "e4961a219109f8fa5217248d2b2a47c687ca088f3e2f61879d5635ebe6ad81e7", + "translatedAt": "2026-08-31T07:03:03.140Z" }, "https://developers.openai.com/api/docs/guides/structured-outputs.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1375,11 +1395,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/tools-apply-patch.md", - "sourceSha256": "798a74c99dd3707d621e5221754213764a26626c6748500f617152f05ded4e2f", + "sourceSha256": "4460113e32af92c682118ee86c008ae425bda313cc4767a9b36e52365e02af54", "sourceUrl": "https://developers.openai.com/api/docs/guides/tools-apply-patch.md", "targetPath": "docs/zh/api/docs/guides/tools-apply-patch.md", - "targetSha256": "448ce09729df91ab15ddc852025bb1e3b11743a3a882b0b4d9749c9cbe5ec93d", - "translatedAt": "2026-08-29T17:35:22.472Z" + "targetSha256": "41df61a9f08b22358e7620539bb6f754160a62404a7151c47cd2754a8d13f57b", + "translatedAt": "2026-08-31T07:27:28.738Z" }, "https://developers.openai.com/api/docs/guides/tools-code-interpreter.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1585,11 +1605,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/webhooks.md", - "sourceSha256": "c647843e21c03cd1db2ae64aa08325781df71148e48ac9e2e2212c93a7a549ab", + "sourceSha256": "8d06c770826963a962d001d0b8a6b49ab10493ad0013ce163d50c4dea8163fd0", "sourceUrl": "https://developers.openai.com/api/docs/guides/webhooks.md", "targetPath": "docs/zh/api/docs/guides/webhooks.md", - "targetSha256": "da34bc66844aa07447470ca608c0ae790346fb34bfd4fb3332dd12797b702851", - "translatedAt": "2026-08-29T16:36:52.912Z" + "targetSha256": "0da7b69a1ce2e8a6fed0d0d0eb261e45162351d25a5548c88e65952d8cf39cfb", + "translatedAt": "2026-08-31T07:09:20.733Z" }, "https://developers.openai.com/api/docs/guides/websocket-mode.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1685,11 +1705,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/workload-identity-federation/oracle-cloud.md", - "sourceSha256": "7b0c286b9a02cf478975461c39db4b823c80f4560155dd8c543903b4edb45d8b", + "sourceSha256": "00b3721a322f66a788d05592f60ce3c215a5044a83f4717d07b5a698c6a72461", "sourceUrl": "https://developers.openai.com/api/docs/guides/workload-identity-federation/oracle-cloud.md", "targetPath": "docs/zh/api/docs/guides/workload-identity-federation/oracle-cloud.md", - "targetSha256": "9a1be3c3634dab29991adb346cb8f768e05ce91093580fbf44de3f6135ed7247", - "translatedAt": "2026-08-30T07:22:25.617Z" + "targetSha256": "04a07cf92b0ea9bb094b4b92d0c6cb1a61301310e360a377a5884206bbf78441", + "translatedAt": "2026-08-31T07:29:04.530Z" }, "https://developers.openai.com/api/docs/guides/workload-identity-federation/spiffe.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1725,11 +1745,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/libraries.md", - "sourceSha256": "ea5345918819b7975fbc32d62cfe9b175788c02bef823b363c971191542caabe", + "sourceSha256": "5dab0c297038e0ee85eaf396b5d14d47681a7e4bfc2c7aff9b3bd08296288925", "sourceUrl": "https://developers.openai.com/api/docs/libraries.md", "targetPath": "docs/zh/api/docs/libraries.md", - "targetSha256": "f9f4fda0c448421990fa0869540b3afbb51df675d39c2136e1ff1597ea9ecd8c", - "translatedAt": "2026-08-29T16:39:09.152Z" + "targetSha256": "fb365fa9c9d3f2cc3757759c055970cd0fa5a9ec44b8cf695e5889bc184d5a83", + "translatedAt": "2026-08-31T07:13:48.470Z" }, "https://developers.openai.com/api/docs/libraries/openai-cli.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1755,21 +1775,21 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/models.md", - "sourceSha256": "553119298e086b444c081db4f38eef917e77c7f4b3e773e37281e219278496ff", + "sourceSha256": "9c5ae962e2b9db36b87c9deebf9ffb32c63535f03343aae4d1b7f0fd4b012cc1", "sourceUrl": "https://developers.openai.com/api/docs/models.md", "targetPath": "docs/zh/api/docs/models.md", - "targetSha256": "1adde71ace3d4214954b359229c51dc5f519e7cac7de0d3f9cb60d1d48cccd61", - "translatedAt": "2026-08-27T07:02:18.577Z" + "targetSha256": "b53871125dc1ca3a2fb793d066532fbbc3c8d9e061bf150832c5c7a4fd247245", + "translatedAt": "2026-08-31T07:02:26.957Z" }, "https://developers.openai.com/api/docs/models/all.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/models/all.md", - "sourceSha256": "553119298e086b444c081db4f38eef917e77c7f4b3e773e37281e219278496ff", + "sourceSha256": "9c5ae962e2b9db36b87c9deebf9ffb32c63535f03343aae4d1b7f0fd4b012cc1", "sourceUrl": "https://developers.openai.com/api/docs/models/all.md", "targetPath": "docs/zh/api/docs/models/all.md", - "targetSha256": "902dab3bf709385049a83120cb2e7bd6c0994f28668eccde54c3360d6b264aca", - "translatedAt": "2026-08-30T07:26:15.130Z" + "targetSha256": "2bc2a31e0826fc2c8b2343b2694625baa4c49ba9a53e5c834ade70537e67d345", + "translatedAt": "2026-08-31T07:30:33.154Z" }, "https://developers.openai.com/api/docs/models/compare.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -2455,11 +2475,11 @@ "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/completions/methods/create.md", - "sourceSha256": "354de186a90bac1c84dacdf9445c2a6958be298b7555145644827747b8fffe72", + "sourceSha256": "524348eab66a17cd22e83e73129874c058cb2fe6e98c2bcaa16a45e13f53fabf", "sourceUrl": "https://developers.openai.com/api/reference/resources/completions/methods/create.md", "targetPath": "docs/zh/api/reference/resources/completions/methods/create.md", - "targetSha256": "449eecdaac18d6aa91d73102c01bd508587e177e09b0279b10be16066beac075", - "translatedAt": "2026-08-30T14:41:48.687Z" + "targetSha256": "6ee9578b631f99b557f8a2027dd456a82c474c11ad6ce7116f157f32da26dbe5", + "translatedAt": "2026-08-31T07:31:51.607Z" }, "https://developers.openai.com/api/reference/resources/containers.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -3512,154 +3532,154 @@ "translatedAt": "2026-08-30T15:00:27.959Z" }, "https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md", "sourceSha256": "781796273019fd7b944d0f54276b66ae19d320c49aa205f5a460c6817da212ed", "sourceUrl": "https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md", - "targetSha256": "ab6b405893222c993db7dc0b4586ebad5ef43a788de96859f75b74472a64e073", - "translatedAt": "2026-08-26T17:19:40.232Z" + "targetSha256": "7cb7c33c243fcede585fa88416b2fbdd2562a6bae68f8872fd19da657bd65d4b", + "translatedAt": "2026-08-31T07:32:04.308Z" }, "https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md", "sourceSha256": "e2f7ca8fbee72fab06c5e3863013b6bbaf70167d807fd05f775926a41e35f148", "sourceUrl": "https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md", "targetPath": "docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md", - "targetSha256": "a84c4abcaa5026824d85309b068507a5db4f9d9c3504326406f4ced0e975eda2", - "translatedAt": "2026-08-26T17:19:44.326Z" + "targetSha256": "ff44aac8da1a93c69f574275fbca99d192a3a0052b5f3d615b38caa3ebe53ed6", + "translatedAt": "2026-08-31T07:32:21.417Z" }, "https://developers.openai.com/api/reference/resources/projects.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects.md", "sourceSha256": "44eae2ec97e1abbfc660551d985773fa228e9f2df2f608449b1a250f93a2dbee", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects.md", "targetPath": "docs/zh/api/reference/resources/projects.md", - "targetSha256": "de42cb9fea1e44b8913ead1c5b4335ce0cbdcc7893fbcb60b383a93019837ee0", - "translatedAt": "2026-08-26T17:19:47.695Z" + "targetSha256": "03375864f45aa2358a99ef33e785d84d78d55cdb6772ff610034b03dece503f5", + "translatedAt": "2026-08-31T07:32:31.589Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/groups.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/groups.md", "sourceSha256": "5dcd0ae0726b48b97b816a7bf97df99a7807da49683a56f38fd0dad00ba25db1", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/groups.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/groups.md", - "targetSha256": "0b3c0ad5208f7768dacf3afe7dc05027b9b4173fcea29948bffbd68b31ab45fc", - "translatedAt": "2026-08-26T17:19:50.885Z" + "targetSha256": "057d1a2802ddbf6b1916913df39cdd49f0cc04010845cf20f94a1667c8192577", + "translatedAt": "2026-08-31T07:32:41.518Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md", "sourceSha256": "2535c8baf78013daa40bc438b5a8a490c4c6493eb98feef29bf47f99127d3a02", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md", - "targetSha256": "e8081a40b48ec75d152d3ff0e8cb1a0491115d2b3b804214cfa1dc69f33c605a", - "translatedAt": "2026-08-26T17:19:54.365Z" + "targetSha256": "d1d3c69daa9037d2b7e6b6f05f7211b4a92e057f4072d9c8cf336db25464830a", + "translatedAt": "2026-08-31T07:32:50.887Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md", "sourceSha256": "2f34b89509c48fecb2feac7c5eee6c1b952e2369707613845a6635cfe087b948", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md", - "targetSha256": "a0ec9e99d306afe8bef1258791d0c9db081b00f049cf4a52adf7cdae75cc8a46", - "translatedAt": "2026-08-26T17:19:58.436Z" + "targetSha256": "b5e61e41d0719443c2b8fa8a251b0f880975049dad87f441300a86a65f8140b9", + "translatedAt": "2026-08-31T07:32:57.449Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md", "sourceSha256": "e28539dc752d3ed146fc43a9ad2da8840ce393b6091fa850b3ef714c192b19ae", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md", - "targetSha256": "45b5134035c553a7967de8267ece2f6485952e8dd2e37377de791f4147038b78", - "translatedAt": "2026-08-26T17:20:02.235Z" + "targetSha256": "d1ebffad6143a3ea1c8869974ff6c87fc97c7a8c6837c11b206effac38a5d27e", + "translatedAt": "2026-08-31T07:33:18.514Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/roles/methods/create.md", "sourceSha256": "c35e1b8cb7252d9e788646f3f78423651045deca2a0c638799e6e9be42cbe7f7", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/create.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/roles/methods/create.md", - "targetSha256": "5da51a93c8c2e93b08a1594dd385344b23582029e4e426539bd945a9ba244da6", - "translatedAt": "2026-08-26T17:20:05.390Z" + "targetSha256": "d417ad46f399d855688389d77565fefe86d6006443a325c3515b5af80aa8de19", + "translatedAt": "2026-08-31T07:33:28.100Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/roles/methods/delete.md", "sourceSha256": "2debe1b0e87ebf7e92fd30ed6a7f8f0328eb567a69584221427c73a14e17e257", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/roles/methods/delete.md", - "targetSha256": "7a470ff1a09071e186be20098e1b70ab81c8ec4a20056a7e4fddae115de77c29", - "translatedAt": "2026-08-26T17:20:08.493Z" + "targetSha256": "43a786f1f5580678387e806af13a46d0dd0e6773830a457631cfcb18687cb633", + "translatedAt": "2026-08-31T07:33:42.450Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/roles/methods/list.md", "sourceSha256": "fc6c5a8e78292a35714322a1bbc9d62c0f624ef65bab72b91f46955871b34c8f", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/list.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/roles/methods/list.md", - "targetSha256": "7504231150eb5e0612d1ff9a235589e039669d3fb5b58cc7dc53baedc7b131c3", - "translatedAt": "2026-08-26T17:20:11.884Z" + "targetSha256": "6054b74089cac92ffe40a9f71adc0de6a758edaf8f1eb498e4f4cc5dd112ac60", + "translatedAt": "2026-08-31T07:33:51.368Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/update.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/roles/methods/update.md", "sourceSha256": "b72df9eb9d1c0cf55ffd059d7b5ed7bcc9ab80027e5006ee846c220fa9fef419", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/update.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/roles/methods/update.md", - "targetSha256": "d88690fa6932806a342016eca88a71644f61a2e729ffde9465dd014ca1eeb51d", - "translatedAt": "2026-08-26T17:20:15.160Z" + "targetSha256": "4e218740fc10713e29ab9f6b04c9fe2db7117b3f1780ca22db79635808aa140a", + "translatedAt": "2026-08-31T07:33:57.595Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/users.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/users.md", "sourceSha256": "4ca5a08d84d9ede5661b56ce02e678535fb875b8feca2b3d5fdbd64271bd8477", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/users.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/users.md", - "targetSha256": "c6e380e8c99f1d4247756476745d6b48893b29dd905d7712d16fa28487351811", - "translatedAt": "2026-08-26T17:20:18.738Z" + "targetSha256": "29a5bdbfcde1fe5a3bdeb6fe3a688cb3f75c20b1d0e6d77ea724b9b024cacba6", + "translatedAt": "2026-08-31T07:34:09.853Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md", "sourceSha256": "790f064626411ef9e4f1d6b713fb80d081284516f97b0b52834cf82186006540", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md", - "targetSha256": "3d6190e060d78338613d0c63fa0080b1756408f77c6841c0dd806d0a976b3c5f", - "translatedAt": "2026-08-26T17:20:22.228Z" + "targetSha256": "e6a464bd509e2a10d76e44bfe9619b9b9b4a7e7a8327228568341a339bfdbf61", + "translatedAt": "2026-08-31T07:34:39.126Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md", "sourceSha256": "fba626574679972e5dfebcb864aa0b4d47311d2958846819ddd44aaa09abd47a", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md", - "targetSha256": "9ddc105e9903ba363a4dc4b7e041b25e3ba95e34670c1bb692e103810858617b", - "translatedAt": "2026-08-26T17:20:25.707Z" + "targetSha256": "04553fc88ec60235eb9ece7ac1d98d5d9ebd7d8a6a091b18ed0cdd5e4197a47c", + "translatedAt": "2026-08-31T07:34:47.744Z" }, "https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md", "sourceSha256": "58d231af31d865c4028afc6412c6be2856312e9af81adf16da9cf15fce082eda", "sourceUrl": "https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md", "targetPath": "docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md", - "targetSha256": "e984d476c7f456cca327c73a4fb7acd666458ddd07f7a84a29feed082da75a30", - "translatedAt": "2026-08-26T17:20:28.781Z" + "targetSha256": "2ad11a609955605c7ff2e559a36dcfb62ab34d9f9b9bf4b21ab821b3a19a5301", + "translatedAt": "2026-08-31T07:35:01.789Z" }, "https://developers.openai.com/api/reference/resources/realtime.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -3712,44 +3732,44 @@ "translatedAt": "2026-08-26T20:56:46.700Z" }, "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/realtime/subresources/calls/methods/create.md", "sourceSha256": "60f80aa45ae4f4f8a2d4f2dbf46cfeaa42c5c68c9f71ebb81347009531ef0871", "sourceUrl": "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/create.md", "targetPath": "docs/zh/api/reference/resources/realtime/subresources/calls/methods/create.md", - "targetSha256": "8a57cbf439320f1754c1f53f97eaaefced8c83d552e0446524584dc8031999c2", - "translatedAt": "2026-08-27T01:25:31.999Z" + "targetSha256": "c99336669797abde88c5f54fc7d18009151173c7e3416a66a66d9187f425a3ce", + "translatedAt": "2026-08-31T07:35:11.552Z" }, "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/hangup.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/realtime/subresources/calls/methods/hangup.md", "sourceSha256": "12277ec0daa3e304e6e2de7d4074880e8468270888f5bb007b24536b25994bc6", "sourceUrl": "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/hangup.md", "targetPath": "docs/zh/api/reference/resources/realtime/subresources/calls/methods/hangup.md", - "targetSha256": "d7ceefb48ef2fa028e56ed32fd097bcd23d2d7cd58285ed6c1437aeba24d6d2f", - "translatedAt": "2026-08-26T17:20:35.124Z" + "targetSha256": "946c04d6fa2e7ca39c76d79b974dd60e59dd24f9ce43aa0bf188117a021d3aab", + "translatedAt": "2026-08-31T07:35:26.291Z" }, "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/refer.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/realtime/subresources/calls/methods/refer.md", "sourceSha256": "79818d749048464fb002311da6a00f113f741d38b699c8c5999fc3cd59b92520", "sourceUrl": "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/refer.md", "targetPath": "docs/zh/api/reference/resources/realtime/subresources/calls/methods/refer.md", - "targetSha256": "e96d35f39795fe0144263cfdb2f87e52683057ac2b13b89bd969c6f3f3e1fdbe", - "translatedAt": "2026-08-26T17:20:40.656Z" + "targetSha256": "804de0a2aa40c2bdc84c637dfb742a5204433cec531162633d7f112e50352633", + "translatedAt": "2026-08-31T07:35:38.422Z" }, "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/reject.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/realtime/subresources/calls/methods/reject.md", "sourceSha256": "6ba6d2a3ef1603fcbaa3057d6e03dfd533db03fbf13bbc1a8e43fb02264fff69", "sourceUrl": "https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/reject.md", "targetPath": "docs/zh/api/reference/resources/realtime/subresources/calls/methods/reject.md", - "targetSha256": "af44f15e50e14f7d7dd7cfb8697cfc972c867d19ec10c93abe528571a3512f4f", - "translatedAt": "2026-08-26T17:20:46.590Z" + "targetSha256": "57d7504d356e3cdeb7a79799815bf50cf2ceb35e9ee1520fbd754a5c30a5416b", + "translatedAt": "2026-08-31T07:35:59.319Z" }, "https://developers.openai.com/api/reference/resources/realtime/subresources/client_secrets.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -3832,14 +3852,14 @@ "translatedAt": "2026-08-26T21:18:52.691Z" }, "https://developers.openai.com/api/reference/resources/responses/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/responses/methods/delete.md", "sourceSha256": "26254c3c69acce6517f6ab5c7790adb813d552fdb3098a6c441df9b1ddb0b46a", "sourceUrl": "https://developers.openai.com/api/reference/resources/responses/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/responses/methods/delete.md", - "targetSha256": "2ef54b7823dd2c97cc1069923b0c4553f7dfa44cf9b2743d105473ed7d90e94b", - "translatedAt": "2026-08-26T17:20:50.028Z" + "targetSha256": "b32f0a50aadc651c0e000625e449bbdb9a676b47cde73e7df39303aac20f790e", + "translatedAt": "2026-08-31T07:36:10.127Z" }, "https://developers.openai.com/api/reference/resources/responses/methods/retrieve.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -3892,44 +3912,44 @@ "translatedAt": "2026-08-26T21:46:17.368Z" }, "https://developers.openai.com/api/reference/resources/uploads.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/uploads.md", "sourceSha256": "3c301ac2f6572403afac2679a6a64da7ee049ff5f851e68de046f85435e5cad2", "sourceUrl": "https://developers.openai.com/api/reference/resources/uploads.md", "targetPath": "docs/zh/api/reference/resources/uploads.md", - "targetSha256": "3830596fbc72f7d3590fe97e385f949773ff6a6d44e0d25fb5d82d0710194b33", - "translatedAt": "2026-08-26T17:21:36.738Z" + "targetSha256": "44f8dbaa7bca492a4791af236bbab9b60a5472ba79b9bdac58aeb568d2a7a4c3", + "translatedAt": "2026-08-31T07:38:18.237Z" }, "https://developers.openai.com/api/reference/resources/uploads/methods/cancel.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/uploads/methods/cancel.md", "sourceSha256": "0f5c62c12b600dfe33eaf2e5785128fcf706ec2da3df962f52a110dc491ee622", "sourceUrl": "https://developers.openai.com/api/reference/resources/uploads/methods/cancel.md", "targetPath": "docs/zh/api/reference/resources/uploads/methods/cancel.md", - "targetSha256": "d36cd54fc221785a2a0217465d78ea4cb97e98363a7a6e60d1bf8d77bbfc788c", - "translatedAt": "2026-08-26T17:21:46.915Z" + "targetSha256": "15213d4c27dfa9ef0476583b52e01fb65208620b49cce93640025c8c33c52e07", + "translatedAt": "2026-08-31T07:38:40.469Z" }, "https://developers.openai.com/api/reference/resources/uploads/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/uploads/methods/create.md", "sourceSha256": "4ff17acea2a25b3cbc93696905f1cc0a44b4467bd46ae946860445b8480b3d05", "sourceUrl": "https://developers.openai.com/api/reference/resources/uploads/methods/create.md", "targetPath": "docs/zh/api/reference/resources/uploads/methods/create.md", - "targetSha256": "111950c9b8c73446691215c857d77318af86da0e7c65b56fcd01a9bdc92b7d6c", - "translatedAt": "2026-08-26T17:22:01.698Z" + "targetSha256": "14e36f90dc2cd35abd22cbcd040f8ff5cb924c0ddc34b96c433a1c01150cc016", + "translatedAt": "2026-08-31T07:39:16.759Z" }, "https://developers.openai.com/api/reference/resources/uploads/subresources/parts/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/uploads/subresources/parts/methods/create.md", "sourceSha256": "84b85b4d35ec6ed44f90a08fe01f19bcdc708fe627385266131aae0ad5c9cf8f", "sourceUrl": "https://developers.openai.com/api/reference/resources/uploads/subresources/parts/methods/create.md", "targetPath": "docs/zh/api/reference/resources/uploads/subresources/parts/methods/create.md", - "targetSha256": "95b64d34193c3a098907e8e647e062370dd8d3a444bd52283c7aa9aca76e637b", - "translatedAt": "2026-08-26T17:22:12.481Z" + "targetSha256": "b9b822eca846d4522a1c98b843a88b0d62d8716f9d5ba047ab1bc5fda9043dfe", + "translatedAt": "2026-08-31T07:39:37.426Z" }, "https://developers.openai.com/api/reference/resources/vector_stores.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -3942,114 +3962,114 @@ "translatedAt": "2026-08-26T21:47:18.028Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/methods/create.md", "sourceSha256": "3f0fef3553fa933728f0b4c9960900678edf0823dc1de6fe356b4d2cab61121a", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/methods/create.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/methods/create.md", - "targetSha256": "0b3edd2c699c97d645f08d3cc35802328747d68baf8bf06da0baa7646ddce210", - "translatedAt": "2026-08-26T17:22:27.563Z" + "targetSha256": "9753b2180580d74a554b96df0c98204b4ad509b2082c030820d442299cf25245", + "translatedAt": "2026-08-31T07:40:03.826Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/methods/delete.md", "sourceSha256": "39ad5c2f3550cb14befc51949e1300520d5bb8ceacde8bf5a3a686dd47e2ca5f", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/methods/delete.md", - "targetSha256": "3564ed94d40d03a05d2c32866c5704cbc7fd22707c900765e935bf7fcd0d8bcf", - "translatedAt": "2026-08-26T17:22:31.150Z" + "targetSha256": "d40470c0007648ec7060a0538a5af0b5216f16c8bfa4fd418a03b3763fe12dc1", + "translatedAt": "2026-08-31T07:40:17.508Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/methods/list.md", "sourceSha256": "44de16a6c006080b9c5a307a5fe8d5a7735875c91c1bdfc0d1915c1cb99085b3", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/methods/list.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/methods/list.md", - "targetSha256": "494dfc7c9e05eabc2e65710d14d4dbb75275f13376985f52fe837111d3066e1a", - "translatedAt": "2026-08-26T17:22:48.276Z" + "targetSha256": "8c72b01b04b6fbc5a3441a6903e32ca7e1a6f275df913b2f9079982c0eefcacc", + "translatedAt": "2026-08-31T07:40:55.877Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/methods/retrieve.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/methods/retrieve.md", "sourceSha256": "3b7fe75a0c9f4381dfaaf2ea7601c9d9736789f1e6368126f76aaf2186b60d3e", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/methods/retrieve.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/methods/retrieve.md", - "targetSha256": "2889871289e4e4f45bc5807fb7fcd4fa4e48095c5ff11fdad016411a9a2887a4", - "translatedAt": "2026-08-26T17:22:57.318Z" + "targetSha256": "8944a4c849aa6baf16153b54ac4164bb1dafed18cd1b4dce028e5737c0692b1c", + "translatedAt": "2026-08-31T07:41:12.992Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/methods/search.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/methods/search.md", "sourceSha256": "586045b39ca13470f7eb2536e13e030367778c6beeec123ffcbb46d29600a2b9", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/methods/search.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/methods/search.md", - "targetSha256": "da46212fcbda32c67ed21b2e9fde95f688eee1b9b80239448b6803f7a3f6ebd4", - "translatedAt": "2026-08-26T17:23:10.088Z" + "targetSha256": "5212b2ecaad96b304b0c24b0e7954b5f72f85a18e78d93e6fe1985a4828bca28", + "translatedAt": "2026-08-31T07:41:52.251Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/methods/update.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/methods/update.md", "sourceSha256": "61d2a467f89db54e8162bbe0b1b6a5d830009f514d5e6a96227ed87a80a5ddf7", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/methods/update.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/methods/update.md", - "targetSha256": "12f1762cca4f95105203b5e67ddf111c9849cd940ceebd3deecab1bd9ce054f6", - "translatedAt": "2026-08-26T17:23:21.664Z" + "targetSha256": "cecea4af74fa3d60b347db931dbaccb233f9f83546edeffa9f3d7493425319b6", + "translatedAt": "2026-08-31T07:42:27.279Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/file_batches.md", "sourceSha256": "b06fb5ee7dc848dfd532a42f0343bc4c0896c7c3383694ee9dd2d045a679a13a", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/file_batches.md", - "targetSha256": "93999218bc596b5c54443ac5d9ed8d4587800384e1e53e726397d74929324be7", - "translatedAt": "2026-08-26T17:24:14.449Z" + "targetSha256": "500fb12876acf20b21b3af723edebfd20df9eac4ad621a1e4f7402c1b4439bc0", + "translatedAt": "2026-08-31T07:43:40.466Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md", "sourceSha256": "779936fa51f426a92feac9ac1f79c3551f7471f087f189fe4ac484948cd49b30", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md", - "targetSha256": "8f6f6a154666f359bf7c7d0cde8cf13f273ba9cea259a33fe343d8713abcc06d", - "translatedAt": "2026-08-26T17:24:25.753Z" + "targetSha256": "cc0cd6fea62246dcd3f0a575a953eae70eec5f9618cb7b9040dcd5f0295b5f06", + "translatedAt": "2026-08-31T07:43:57.332Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md", "sourceSha256": "808c8894e247919e3640d0de989ba456db92168d864acf0dd26a2400b1e8b3c9", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md", - "targetSha256": "bcbf905bc4850484626d6a446844aa6784c128c9f14d5cd37cfffcdf322bfc4f", - "translatedAt": "2026-08-26T17:24:42.436Z" + "targetSha256": "b798473c763cb208a0bc27ceb08e545f0a1a2e87d31e7d50e9c0342d130da2f7", + "translatedAt": "2026-08-31T07:45:25.740Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md", "sourceSha256": "7af493a4a78df9334cfede616ee745dfd4d85bebbf933c8e0185c9186c5a46ac", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md", - "targetSha256": "11a235ae04a9c28a71d3ad72c076bdc7e0d1b14a1b733f1fdaeaae893a0ba453", - "translatedAt": "2026-08-26T17:24:55.904Z" + "targetSha256": "e657354e4af1c30bc0e0463ac6e12983359b68ce7d788d5f01fa01aa2b2d2428", + "translatedAt": "2026-08-31T07:46:09.134Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md", "sourceSha256": "783e9d491fe6452ae3f1bfe3fb00bcc93d56e476c0ad813174988016b0201c39", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md", - "targetSha256": "828b69c32bb3150a8b1dfe941570ffd606db2418ebcb6fd371e2e0b5d41939ad", - "translatedAt": "2026-08-26T17:25:02.504Z" + "targetSha256": "22707267fd52fcec5891686c61b65666ecc8ce2b8ea98e60b584169a0ebb74da", + "translatedAt": "2026-08-31T07:46:31.073Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -4062,64 +4082,64 @@ "translatedAt": "2026-08-26T21:47:43.518Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/content.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/files/methods/content.md", "sourceSha256": "0ea1ccd952981f77c300ee373558fb59af3fa16fea23ee4c7b85845df8d8585f", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/content.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/files/methods/content.md", - "targetSha256": "1821188aef6b347e06b7beb7666e7c6ea69e30cbd6c8a6b93befa0e3d8c94d64", - "translatedAt": "2026-08-26T17:25:08.032Z" + "targetSha256": "017e08160600d56679f3724d7ecd216371268f457590415ffde8a5a6e9941125", + "translatedAt": "2026-08-31T07:46:56.487Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/files/methods/create.md", "sourceSha256": "6c913d5931581e46530afa7b3a0c5dee34517ca1f6defada794cf13d84fff4e3", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/create.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/files/methods/create.md", - "targetSha256": "cae7d4307451cff806ad352e00c1977c7c191d0349dafb6987017d464b6b6435", - "translatedAt": "2026-08-26T17:25:23.727Z" + "targetSha256": "774009c746453c0f3097ebf8f4f4513f8ca830997fd4cdda19b5d3db7a93a7f2", + "translatedAt": "2026-08-31T07:47:59.907Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/files/methods/delete.md", "sourceSha256": "a12da3db554d04e953443aa7b461f708dba92a0cb2553efd216dc3bf73fbea18", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/files/methods/delete.md", - "targetSha256": "9ee6719c019a69f391d0c52ea4148ced75d3be6c5db271d50b7acbeaeea6c41f", - "translatedAt": "2026-08-26T17:25:28.309Z" + "targetSha256": "a7ea2fe2fabd8a50618c523228fa47fda6f73aaf578bac9aa0b537ecf0c0365f", + "translatedAt": "2026-08-31T07:48:17.428Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/files/methods/list.md", "sourceSha256": "1e529f7acf0dc01cca1a7dc6101972626b88bf32d0953506979fe63b2c7f125a", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/list.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/files/methods/list.md", - "targetSha256": "d1c83d6e673a60089ff402f647fbf658fd09294670f31b2cb40b5fa80b8895ca", - "translatedAt": "2026-08-26T17:25:47.623Z" + "targetSha256": "1e2a429aa70a4abb3830eb289c65e8258902797e80475fd510d8c61ae7cec13d", + "translatedAt": "2026-08-31T07:49:08.480Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md", "sourceSha256": "7f505a5ef57217d42eda7cbaad274a2b82d6e8b66e2cda892c25d8fe6b46585e", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md", - "targetSha256": "5a403ce510769f899d5a6ec5341418671ac2c2eb8d7d2a4a067406eb6d313941", - "translatedAt": "2026-08-26T17:25:57.872Z" + "targetSha256": "147651db741fbdcb1fcf745c9253f48931410761b4b92b1d95ffafc0c7dbce16", + "translatedAt": "2026-08-31T07:49:38.491Z" }, "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/update.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/vector_stores/subresources/files/methods/update.md", "sourceSha256": "265ba079c81fa608fcd52ac5509e57579b92c5fd125c9136cd95ad901bfb2ca7", "sourceUrl": "https://developers.openai.com/api/reference/resources/vector_stores/subresources/files/methods/update.md", "targetPath": "docs/zh/api/reference/resources/vector_stores/subresources/files/methods/update.md", - "targetSha256": "d26a83a855037ead9f29f666dc666c966337c9f840196812f55ff6c55b2d493b", - "translatedAt": "2026-08-26T17:26:12.621Z" + "targetSha256": "e4fd566cc965fea1af5d0ec06ad8b54e02bde7bc2ee0d0428db7385e62e6536e", + "translatedAt": "2026-08-31T07:50:25.149Z" }, "https://developers.openai.com/api/reference/resources/videos.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -4132,44 +4152,44 @@ "translatedAt": "2026-08-26T21:48:19.569Z" }, "https://developers.openai.com/api/reference/resources/videos/methods/create.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/videos/methods/create.md", "sourceSha256": "c13213f435aa73f3473cc499bd1c0037b8eb213f9cba12f078dd4dc97ee4b6ba", "sourceUrl": "https://developers.openai.com/api/reference/resources/videos/methods/create.md", "targetPath": "docs/zh/api/reference/resources/videos/methods/create.md", - "targetSha256": "589a3bdc24821715239101f330917c59fb79336358d641e65040643901932363", - "translatedAt": "2026-08-26T17:26:22.098Z" + "targetSha256": "dea45315c1e6cd8547278c5f9bc3286086a3b0bc9b2e1724461a30a6db94deea", + "translatedAt": "2026-08-31T07:50:54.309Z" }, "https://developers.openai.com/api/reference/resources/videos/methods/delete.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/videos/methods/delete.md", "sourceSha256": "6c8c747a93cc30fe7cf563e76de689278c6d5bb2895ace0ab771ed5d942d328d", "sourceUrl": "https://developers.openai.com/api/reference/resources/videos/methods/delete.md", "targetPath": "docs/zh/api/reference/resources/videos/methods/delete.md", - "targetSha256": "c142dd246e2363fa7f215adbd7e98dc6ba303cdace3232ff338f0af2ab543e7b", - "translatedAt": "2026-08-26T17:26:27.776Z" + "targetSha256": "c382bf91efccc2fd610c28df36cb5e409cfb8f0f247e9dfd3cdc2c547e1c9907", + "translatedAt": "2026-08-31T07:51:18.747Z" }, "https://developers.openai.com/api/reference/resources/videos/methods/list.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/videos/methods/list.md", "sourceSha256": "02d4b2d82ce2ee7a4af8c57c4350941e00179decab6b981b8d68c5c50122be03", "sourceUrl": "https://developers.openai.com/api/reference/resources/videos/methods/list.md", "targetPath": "docs/zh/api/reference/resources/videos/methods/list.md", - "targetSha256": "55013758a3d9744df369acda1fc48d13ba784ad26b521a875b8bdfa28bcbc937", - "translatedAt": "2026-08-26T17:26:37.270Z" + "targetSha256": "82b52a8410354a8e8da1ba496b2b6ffb69a65abbdc332b931ef1a8dd002d5224", + "translatedAt": "2026-08-31T07:51:50.585Z" }, "https://developers.openai.com/api/reference/resources/videos/methods/retrieve.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/videos/methods/retrieve.md", "sourceSha256": "1825ff80f068b885da46a71c310148e045912607c271b812e658d7dc65bd0141", "sourceUrl": "https://developers.openai.com/api/reference/resources/videos/methods/retrieve.md", "targetPath": "docs/zh/api/reference/resources/videos/methods/retrieve.md", - "targetSha256": "22c75602c7dbb6b5965c7faa647a0381def63f1bda7dff4d730e1616ba774c12", - "translatedAt": "2026-08-26T17:26:43.686Z" + "targetSha256": "5f59c7fd68b6f867a8c6e76b6db21636c5fd3384a2cd64c900793e1ac5013a86", + "translatedAt": "2026-08-31T07:52:06.457Z" }, "https://developers.openai.com/api/reference/resources/webhooks.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -4182,14 +4202,14 @@ "translatedAt": "2026-08-26T21:48:51.671Z" }, "https://developers.openai.com/api/reference/resources/webhooks/methods/unwrap.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/reference/resources/webhooks/methods/unwrap.md", "sourceSha256": "8309a30a1ec3e65c79420e9972edcbb08f2f6039ed85e909b5ab49735e37beb2", "sourceUrl": "https://developers.openai.com/api/reference/resources/webhooks/methods/unwrap.md", "targetPath": "docs/zh/api/reference/resources/webhooks/methods/unwrap.md", - "targetSha256": "5e430dac3e31ace4d8ef071e72830ecb967bc6c5d980eb6fb25e655ff20ae078", - "translatedAt": "2026-08-26T17:26:45.993Z" + "targetSha256": "9d662549c555ea775005ead81460d7a3cd130c6db0f7790327f70a59ce726b3e", + "translatedAt": "2026-08-31T07:52:11.368Z" }, "https://developers.openai.com/api/reference/responses/overview.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", diff --git a/docs/zh/api/docs/assistants/migration.md b/docs/zh/api/docs/assistants/migration.md index 5fc53bd..a2cb7b8 100644 --- a/docs/zh/api/docs/assistants/migration.md +++ b/docs/zh/api/docs/assistants/migration.md @@ -1,17 +1,19 @@ # Assistants 迁移指南 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 -在 Responses API 实现功能对等之后,我们已弃用 Assistants API。它将于 2026 年 8 月 26 日停用。请参阅 [迁移指南](https://developers.openai.com/platform/assistants/migration) 以更新你的集成。 [了解更多](https://platform.openai.com/docs/guides/migrate-to-responses). +Assistants API 已于 2026 年 8 月 26 日正式下线,不再可用。请使用 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses) 进行新的集成。 -我们正在从 Assistants API 迁移到全新的 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses) ,以获得更简洁、更灵活的心智模型。 +感谢每一位使用 Assistants API 的用户。我们感谢你所构建的一切,以及一路上分享的反馈。 -Responses 更简单——发送输入项即可获得输出项。使用 Responses API,你还可以获得更好的性能以及全新功能,例如 [深度研究](https://developers.openai.com/api/docs/guides/deep-research), [MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp),以及 [计算机使用](https://developers.openai.com/api/docs/guides/tools-computer-use)。此次变更还让你能够管理对话,而无需回传 `previous_response_id`. +请参考本指南将你的集成迁移到 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses). -### 发生了什么变化? +Responses 更加简洁——发送输入项并接收输出项即可。使用 Responses API,你还将获得更好的性能以及全新功能,例如 [深度研究](https://developers.openai.com/api/docs/guides/deep-research), [MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp),以及 [计算机使用](https://developers.openai.com/api/docs/guides/tools-computer-use)。此次变更还让你能够管理对话,而无需再回传 `previous_response_id`. + +### 有哪些变化? @@ -53,31 +55,31 @@ Responses 更简单——发送输入项即可获得输出项。使用 Responses
-## 从 assistants 到 prompts +## 从 Assistants 到 prompts -Assistants 是持久的 API 对象,将模型选择、指令和工具声明捆绑在一起——完全通过 API 创建和管理。作为其替代品的 prompts 只能在仪表板中创建,你可以在仪表板中随着产品开发对它们进行版本管理。 +Assistants 是一类持久化的 API 对象,将模型选择、指令和工具声明整合在一起——完全通过 API 创建和管理。作为其替代品的 prompts 只能在仪表板中创建,你可以在那里随着产品开发对其进行版本管理。 -### 为什么这很有用 +### 这样做的好处 -- **可移植性与版本管理**:你可以对提示词规范进行快照、审查、差异比较和回滚。你还可以对提示词进行版本管理,这样你的代码只需指向最新版本即可。 -- **关注点分离**:你的应用代码现在负责编排(历史裁剪、工具循环、重试),而你的提示词则专注于高层行为与约束(系统指引、工具可用性、结构化输出 schema、温度默认值)。 -- **Realtime 兼容性**:当你通过 Realtime API 连接时,可以复用同一份提示词配置,从而在聊天、流式传输和低延迟交互会话中获得统一的行为定义。 -- **工具与输出一致性**:使用提示词后,你启动的每一个 Responses 或 Realtime 会话都会继承一致的契约,因为提示词封装了工具 schema 和结构化输出预期。 +- **可移植性与版本管理**:你可以对提示词规格进行快照、审查、差异比对和回滚。你还可以对提示词进行版本管理,让你的代码只需指向最新版本即可。 +- **关注点分离**:你的应用代码现在负责编排(历史裁剪、工具循环、重试),而你的提示词专注于高层行为与约束(系统指引、工具可用性、结构化输出 schema、温度默认值)。 +- **Realtime 兼容性**:当你通过 Realtime API 连接时,可以复用同一套提示词配置,从而在聊天、流式传输和低延迟交互会话之间获得统一的行为定义。 +- **工具与输出一致性**:使用提示词后,你启动的每一次 Responses 或 Realtime 会话都会继承一致的契约,因为提示词封装了工具 schema 和结构化输出期望。 ### 实用的迁移步骤 -1. 识别每个现有 Assistant 的 _instruction + tool_ bundle。 -2. 在仪表板中,将该 bundle 重新创建为一个命名的 prompt。 -3. 将 prompt ID(或其导出的规范)存放在源代码管理中,以便应用程序代码可以引用稳定的标识符。 -4. 在 rollout 期间,通过交换 prompt ID 来运行 A/B 测试——无需以编程方式创建或删除 assistant 对象。 +1. 识别每个现有 Assistant 的 _指令 + 工具_ 组合。 +2. 在控制台中,将该组合重新创建为一个命名的 prompt。 +3. 将该 prompt ID(或其导出规范)存入源代码管理,以便应用代码能够引用一个稳定的标识符。 +4. 在灰度发布期间,通过交换 prompt ID 来运行 A/B 测试——无需以编程方式创建或删除助手对象。 -把提示词当作一个 **可版本化的行为配置** ,插入到 Responses 或 Realtime API 中。 +将提示词视为一个 **版本化的行为配置** ,可以接入 Responses 或 Realtime API。 --- -## 从对话线到会话 +## 从会话线程到对话 -线程是存储在服务端的消息集合。线程只能 _存储消息。_ 对话存储的是条目(item),其中可以包含消息、工具调用、工具输出以及其他数据。 +会话线程是存储在服务端的消息集合。线程只能 _存储消息_ 。对话可存储多个条目,其中可以包含消息、工具调用、工具输出以及其他数据。 ### 请求示例 @@ -89,7 +91,7 @@ Assistants 是持久的 API 对象,将模型选择、指令和工具声明捆 -#### Thread 对象 +#### 线程对象 ```json { @@ -122,9 +124,9 @@ Assistants 是持久的 API 对象,将模型选择、指令和工具声明捆 ## 从 runs 到 responses -Runs 是针对线程执行的异步进程。参见下面的示例。Responses 更简单:提供一组输入项来执行,然后返回一组输出项。 +Runs 是针对线程执行的异步进程。参见下方示例。Responses 更简单:提供一组要执行的输入项,然后返回输出项列表。 -Responses 被设计为可以单独使用,但你也可以将其与 prompt 和 conversation 对象一起使用,以存储上下文和配置。 +Responses 设计为可独立使用,但你也可以将其与 prompt 和 conversation 对象一起使用,以便存储上下文和配置。 ### 请求示例 @@ -261,25 +263,25 @@ Responses 被设计为可以单独使用,但你也可以将其与 prompt 和 c ## 迁移你的集成 -按照下面的迁移步骤从 Assistants API 迁移到 Responses API,同时不会丢失任何功能支持。 +按照下面的迁移步骤,从 Assistants API 迁移到 Responses API,而不会丢失任何功能支持。 -### 1. 基于你的助手创建提示词 +### 1. 从你的助手创建提示词 -1. 识别你的应用中最主要的智能体对象。 -1. 在仪表板中找到它们并点击 `Create prompt`. +1. 确定你应用中最重要的助手对象。 +1. 在仪表板中找到这些对象并点击 `Create prompt`. -这会基于每个现有的助手对象创建一个提示对象。 +这会从每个现有的 assistant 对象创建一个 prompt 对象。 -可复用的提示对象也正在被弃用。如果你使用此迁移 - 路径,请查看 [提示弃用 - 时间表](https://developers.openai.com/api/docs/deprecations#2026-06-03-reusable-prompts) 后再将 - 提示对象用于长期集成中。 +可复用的 prompt 对象也正在被弃用。如果你使用此迁移 + 路径,请查看 [prompts 弃用 + 时间表](https://developers.openai.com/api/docs/deprecations#2026-06-03-reusable-prompts) 之后再在长期集成中采用 + prompt 对象。 ### 2. 将新的用户聊天迁移到 conversations 和 responses -我们不会提供将 Threads 迁移到 Conversations 的自动化工具。相反,我们建议将新的用户线程迁移到 conversations 上,并根据需要迁移较旧的线程。 +使用 Conversations API 和 Responses API 开启新对话。若要保留先前的对话历史,请使用应用程序中已存储的消息。 -以下是一个示例,演示你可能如何回填一个线程: +下面的示例展示了在停止服务之前如何迁移会话历史。用于检索线程消息的 Assistants API 调用已不再可用,请改用你已存储的消息。 ```python import os @@ -357,11 +359,11 @@ puts(conversation.id) ``` -## 对比完整示例 +## 比较完整示例 -下面是一些同时使用 Assistants API 和 Responses API 的集成示例,便于你对比两者的差异。 +以下是同时使用 Assistants API 和 Responses API 的一些集成示例,方便你了解二者之间的差异。 -### 用户聊天应用 +### User chat app @@ -454,6 +456,62 @@ puts(handle_message.call( Responses API +```javascript +import express from "express"; +import OpenAI from "openai"; + +const app = express(); +const client = new OpenAI(); +const conversationsBySession = new Map(); + +app.use(express.json()); + +app.post("/messages", async (request, response) => { + const { content, session_id: sessionId } = request.body ?? {}; + if ( + typeof content !== "string" || + !content.trim() || + typeof sessionId !== "string" || + !sessionId.trim() + ) { + response.status(400).json({ + error: "content and session_id must be non-empty strings.", + }); + return; + } + + let conversationIdPromise = conversationsBySession.get(sessionId); + + if (!conversationIdPromise) { + conversationIdPromise = client.conversations + .create() + .then((conversation) => conversation.id) + .catch((error) => { + conversationsBySession.delete(sessionId); + throw error; + }); + conversationsBySession.set(sessionId, conversationIdPromise); + } + const conversationId = await conversationIdPromise; + + const promptId = process.env.OPENAI_PROMPT_ID; + if (!promptId) { + response.status(500).json({ error: "OPENAI_PROMPT_ID is required." }); + return; + } + + const result = await client.responses.create({ + prompt: { id: promptId }, + input: [{ role: "user", content }], + conversation: conversationId, + }); + + response.json({ content: result.output_text }); +}); + +app.listen(Number(process.env.OPENAI_EXAMPLE_PORT ?? 8000), "127.0.0.1"); +``` + ```python conversations_by_session: dict[str, str] = {} diff --git a/docs/zh/api/docs/guides/advanced-usage.md b/docs/zh/api/docs/guides/advanced-usage.md index 8e8bdfc..a960abd 100644 --- a/docs/zh/api/docs/guides/advanced-usage.md +++ b/docs/zh/api/docs/guides/advanced-usage.md @@ -1,19 +1,19 @@ # 高级用法 -> 完整文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 获取。 +> 完整文档索引请参见 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 -OpenAI 的文本生成模型(通常称为生成式预训练 Transformer 或大语言模型)已经过训练,能够理解自然语言、代码和图像。这些模型会针对输入提供文本输出。这些模型的文本输入也称为“提示词”。设计提示词本质上就是你对大语言模型进行“编程”的方式,通常通过提供指令或一些成功完成任务的示例来实现。 +OpenAI 的文本生成模型(通常被称为生成式预训练变换器或大语言模型)经过训练,能够理解自然语言、代码和图像。这些模型会根据输入提供文本输出。发送给这些模型的文本输入也称为“提示词”。设计提示词本质上就是你对大语言模型进行“编程”的方式,通常是通过提供指令或一些成功完成任务的示例来实现。 -## 可复现输出 +## Reproducible outputs -Chat Completions 默认是非确定性的(即模型输出在每次请求之间可能不同)。尽管如此,我们通过提供对以下内容的访问权限,为你提供一些对确定性输出的控制: [`seed`](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数以及 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/completions#completions/object-system_fingerprint) 响应字段。 +Chat Completions 默认情况下是非确定性的(这意味着模型输出可能因请求而异)。尽管如此,我们通过让你能够访问以下参数来提供对确定性输出的一定控制: [`seed`](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数和 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/completions#completions/object-system_fingerprint) response 字段。 -要在多次 API 调用之间获得(大体上)确定性的输出,你可以: +若要在 API 调用之间获得(大致)确定性的输出,你可以: -- Set the [seed](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数设为任意整数,并在你希望获得确定性输出的所有请求中使用相同的值。 -- 确保所有其他参数(例如 `prompt` 或 `temperature`)在所有请求中保持完全一致。 +- 设置 [seed](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数为任意你选择的整数,并在你希望获得确定性输出的所有请求中使用相同的值。 +- 确保所有其他参数(例如 `prompt` 或 `temperature`)在各请求之间完全一致。 -有时,确定性可能会受到影响,因为 OpenAI 会在我们这边对模型配置进行必要的更改。为了帮助你跟踪这些更改,我们暴露了 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/chat#chat/object-system_fingerprint) 字段。如果该值不同,你可能会看到由于我们在系统中所做的更改而产生的不同输出。 +有时,由于我们 OpenAI 端对模型配置进行必要更改,确定性可能会受到影响。为了帮助你跟踪这些更改,我们提供了 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/chat#chat/object-system_fingerprint) 字段。如果该值不同,你可能会因我们系统在系统层面所做的更改而看到不同的输出。 [确定性输出 @@ -21,35 +21,35 @@ Chat Completions 默认是非确定性的(即模型输出在每次请求之间 Explore the new seed parameter in the OpenAI cookbook](https://developers.openai.com/cookbook/examples/reproducible_outputs_with_the_seed_parameter) -## 管理 tokens +## 管理令牌 -语言模型以称为 token 的文本块为单位读取和生成文本。在英文中,一个 token 可能短到一个字符,也可能长到一个词(例如, `a` 或 ` apple`),而在某些语言中,token 可能比一个字符更短,甚至比一个词更长。 +语言模型按称为 token 的文本块读写文本。在英文中,一个 token 可以短到一个字符,也可以长到一个单词(例如, `a` 或 ` apple`),而在某些语言中,token 甚至可以比一个字符更短,或比一个单词更长。 -作为粗略的经验法则,对于英文文本,1 个 token 大约对应 4 个字符或 0.75 个词。 +作为一个粗略的经验法则,对于英文文本,1 个 token 大约对应 4 个字符或 0.75 个单词。 查看我们的 [Tokenizer 工具](https://platform.openai.com/tokenizer) - ,针对特定字符串进行测试,看看它们如何被转换 token。 + 以测试特定字符串并查看它们如何被转换为 token。 -例如,字符串 `"ChatGPT is great!"` 会被编码为六个 token: `["Chat", "G", "PT", " is", " great", "!"]`. +例如,字符串 `"ChatGPT is great!"` 被编码为六个 token: `["Chat", "G", "PT", " is", " great", "!"]`. -一次 API 调用中的 token 总数会影响: +在一次 API 调用中,token 的总数量会影响: -- 你的 API 调用的成本,因为你按 token 付费 -- 你的 API 调用耗时,因为生成的 token 越多,所需时间也越长 -- 你的 API 调用是否能够成功,因为总 token 数必须低于模型的最大限制( `gpt-3.5-turbo`) +- 你的 API 调用花费多少,因为你是按 token 计费的 +- 你的 API 调用耗时多久,因为生成的 token 越多,所需时间越长 +- 你的 API 调用是否能够成功,因为总 token 必须低于模型的最大限制( `gpt-3.5-turbo`) -输入和输出 token 都会计入这些数量。例如,如果你的 API 调用在消息输入中使用了 10 个 token,并在消息输出中收到了 20 个 token,你将被计费 30 个 token。但请注意,对于某些模型,输入 token 与输出 token 的单价可能不同(详见 [定价](https://openai.com/api/pricing) 页面)。 +输入和输出 token 都会计入这些数量。例如,如果你的API调用在消息输入中使用了 10 个 token,并在消息输出中收到了 20 个 token,那么将按 30 个 token 计费。但请注意,对于某些模型,输入和输出 token 的单价不同(请参阅 [定价](https://openai.com/api/pricing) 页面了解更多信息)。 -要查看一次 API 调用所使用的 token 数,请检查响应中的 `usage` 字段(例如,API 响应中的, `response['usage']['total_tokens']`). +要查看 API 调用使用了多少 token,请检查 `usage` 字段(在 API 响应中,例如, `response['usage']['total_tokens']`). -等聊天模型 `gpt-3.5-turbo` 和 `gpt-4-turbo-preview` 使用 token 的方式与 completions API 中可用的模型相同,但由于它们基于消息的格式,要统计一次对话将使用多少 token 会更困难一些。 +类聊天模型 `gpt-3.5-turbo` 和 `gpt-4-turbo-preview` 使用 token 的方式与 completions API 中可用的模型相同,但由于其基于消息的格式,要计算一次对话将使用多少 token 会更加困难。 -下方是一个针对传入 `gpt-3.5-turbo-0613`. +下面是一个计算传入消息 token 数量的示例函数 `gpt-3.5-turbo-0613`. -的消息进行 token 计数的示例函数。将消息转换为 token 的具体方式可能会因模型而异。因此,当未来发布新模型版本时,该函数返回的结果可能仅为近似值。 +消息转换为 token 的具体方式可能因模型而异。因此,当未来发布新模型版本时,此函数返回的结果可能只是近似值。 ```python def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"): @@ -76,7 +76,7 @@ def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"): ``` -接下来,创建一条消息并将其传入上面定义的函数以查看 token 计数,结果应与 API 用量参数返回的值一致: +接下来,创建一条消息并将其传递给上面定义的函数以查看 token 计数,这应该与 API usage 参数返回的值一致: ```python messages = [ @@ -117,7 +117,21 @@ print(f"{num_tokens_from_messages(messages, model)} prompt tokens counted.") ``` -为确认上述函数生成的 token 数与 API 返回的结果一致,请创建一个新的 Chat Completion: +为了确认上面函数生成的数量与 API 返回的数量一致,请创建一个新的 Chat Completion: + +```javascript +import OpenAI from "openai"; + +const client = new OpenAI(); + +const response = await client.chat.completions.create({ + model, + messages, + temperature: 0, +}); + +console.log(`${response.usage.prompt_tokens} prompt tokens used.`); +``` ```python # example token count from the OpenAI API @@ -154,23 +168,23 @@ System.out.println(usage.promptTokens() + " prompt tokens used."); -若要在不发起 API 调用的情况下统计文本字符串中的 token 数,可使用 OpenAI 的 [tiktoken](https://github.com/openai/tiktoken) Python 库。示例代码可在 OpenAI Cookbook 关于 [如何使用 tiktoken 统计 token](https://developers.openai.com/cookbook/examples/how_to_count_tokens_with_tiktoken). +要查看文本字符串中的 token 数量而不发起 API 调用,可以使用 OpenAI 的 [tiktoken](https://github.com/openai/tiktoken) Python 库。示例代码可以在 OpenAI Cookbook 中关于 [如何使用 tiktoken 计算 token 的指南](https://developers.openai.com/cookbook/examples/how_to_count_tokens_with_tiktoken). -传入 API 的每条消息都会消耗内容、角色及其他字段中的 token 数,再加上少量用于后台格式化的额外 token。该数值在未来可能会略有变化。 +传递给 API 的每条消息会消耗 content、role 和其他字段中的 token 数量,以及一些用于后台格式化的额外 token。这一数字未来可能会略有变化。 -如果一次对话中的 token 数量超出模型的最大限制(例如,对于 `gpt-3.5-turbo` 超过 4097 个 token,或对于 `gpt-4o`),超过 128k 个 token),你必须对文本进行截断、省略或其他方式的缩减,直到其符合限制。请注意,如果某条消息从 messages 输入中被移除,模型将失去与之相关的全部上下文。 +如果对话的 token 数量超出模型的最大限制(例如,对于 `gpt-3.5-turbo` 超过 4097 个 token,或者对于 `gpt-4o`),超过 128k 个 token),你必须截断、省略或以其他方式缩减文本,直到其符合要求。请注意,如果从消息输入中移除某条消息,模型将完全失去与之相关的知识。 -请注意,较长的对话更容易收到不完整的回复。例如,一个 `gpt-3.5-turbo` 长度为 4090 个 token 的对话,其回复在仅生成 6 个 token 后就会被截断。 +请注意,较长的对话更有可能收到不完整的回复。例如,一个 `gpt-3.5-turbo` 长度为 4090 个 token 的对话,其回复在仅生成 6 个 token 后就会被截断。 ## 参数详情 ### 频率和存在惩罚 -在 [Chat Completions API](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions) 中存在的频率和存在惩罚,可用于降低采样出重复词元序列的可能性。 +Chat Completions API 和旧版 Completions 中提供的 frequency 与 presence 惩罚参数,可用于降低对重复 token 序列进行采样的概率。 [聊天补全接口](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions) 可用于降低对重复 token 序列进行采样的概率。 -它们的工作原理是直接对 logits(未归一化的对数概率)施加一个加性贡献来修改其值。 +它们的实现方式是直接对 logits(未经归一化的对数概率)施加一个加性贡献。 ```python mu[j] = mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence @@ -180,21 +194,21 @@ mu[j] = mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence 其中: - `mu[j]` 是第 j 个 token 的 logits -- `c[j]` 是在当前位置之前该 token 被采样的次数 -- `float(c[j] > 0)` 为 1 如果 `c[j] > 0` 否则为 0 +- `c[j]` 是该 token 在当前位置之前被采样的频率 +- `float(c[j] > 0)` 为 1 当 `c[j] > 0` ,否则为 0 - `alpha_frequency` 是频率惩罚系数 - `alpha_presence` 是存在惩罚系数 -可以看到,存在惩罚是一次性累加的贡献,会作用于所有至少被采样过一次的 token;而频率惩罚则按某个 token 已被采样的频率成比例地施加贡献。 +可以看到,presence 惩罚是一次性加性贡献,适用于所有至少被采样过一次的 token;而 frequency 惩罚的贡献与某个特定 token 已经被采样的频率成正比。 -如果目标只是适度减少重复采样,惩罚系数的合理取值大约在 0.1 到 1 之间。如果目标是强力抑制重复,可以把系数提高到 2,但这会明显降低样本质量。使用负值则可以提高重复出现的可能性。 +如果目标只是适度减少重复样本,惩罚系数的合理取值在 0.1 到 1 左右。如果目标是强力抑制重复,则可以将系数提升到 2,但这样做会明显降低样本质量。使用负值可以提高重复出现的可能性。 ### Token log probabilities -该 [`logprobs`](https://developers.openai.com/api/reference/resources/chat#chat-create-logprobs) parameter found in the [Chat Completions API](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions), when requested, provides the log probabilities of each output token, and a limited number of the most likely tokens at each token position alongside their log probabilities. This can be useful in some cases to assess the confidence of the model in its output, or to examine alternative responses the model might have given. +该 [`logprobs`](https://developers.openai.com/api/reference/resources/chat#chat-create-logprobs) parameter found in the [聊天补全接口](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions), when requested, provides the log probabilities of each output token, and a limited number of the most likely tokens at each token position alongside their log probabilities. This can be useful in some cases to assess the confidence of the model in its output, or to examine alternative responses the model might have given. ### 其他参数 -请参阅完整 [API 参考文档](https://platform.openai.com/docs/api-reference/chat) 以了解更多信息。 \ No newline at end of file +请参阅完整的 [API 参考文档](https://platform.openai.com/docs/api-reference/chat) 以了解更多信息。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/background.md b/docs/zh/api/docs/guides/background.md index 0bf7dcb..65d2322 100644 --- a/docs/zh/api/docs/guides/background.md +++ b/docs/zh/api/docs/guides/background.md @@ -1,22 +1,22 @@ # 后台模式 -> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取对应文档页面的 Markdown 版本。 +> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 -智能体,例如 [Codex](https://openai.com/index/introducing-codex/) 和 [Deep Research](https://openai.com/index/introducing-deep-research/) 表明推理模型可能需要数分钟才能解决复杂问题。后台模式使你能够在 GPT-5.2 和 GPT-5.2 Pro 等模型上可靠地执行长时间运行的任务,而不必担心超时或其他连接问题。 +像 智能体 [Codex](https://openai.com/index/introducing-codex/) 和 [Deep Research](https://openai.com/index/introducing-deep-research/) 都表明推理模型可能要花费数分钟来解决复杂问题。后台模式可让你在 GPT-5.2 和 GPT-5.2 Pro 等模型上可靠地执行长时间运行的任务,无需担心超时或其他连接问题。 -后台模式会异步启动这些任务,开发者可以轮询响应对象来随时检查状态。要在后台启动响应生成,请发送一个将API请求的 `background` 设置为 `true`: +后台模式会异步启动这些任务,开发者可以轮询响应对象来随时查看状态。若要在后台启动响应生成,请发起一个 API 请求,并附带 `background` 设置为 `true`: -来自零数据保留(ZDR)项目的后台请求使用 - `store=false`。运行。响应数据会临时存储到磁盘上约 10 - 分钟,以支持异步执行和轮询。 +零数据留存 (ZDR) 项目发起的后台请求会使用 + `store=false`。运行。响应数据会临时存储到磁盘约 10 + 分钟,以便异步执行和轮询。 对于使用 [Modified Abuse Monitoring](https://developers.openai.com/api/docs/guides/your-data#modified-abuse-monitoring),的项目,包括 -增强型 Modified Abuse Monitoring,当前台请求省略该字段或将其设为 -时,将遵循标准保留 `store` 策略。后台响应仅在 `true`。被显式提供的情况下 -会在轮询期之后继续保留 `store=true` 。 -如果 `store` 策略。后台响应仅在 `false` 对于后台请求,响应 -会在大约 10 分钟后被删除。 +增强版 Modified Abuse Monitoring,前台请求遵循标准 +留存策略,当 `store` 省略或设置为 `true`。时。后台响应仅在 +被显式提供时,才会在轮询期 `store=true` 之后继续保留。 +如果 `store` 省略或设置为 `false` 对于后台请求,响应 +会在约 10 分钟后被删除。 在后台生成响应 @@ -103,6 +103,26 @@ var response = client.responses().create(params); System.out.println(response.status().orElseThrow()); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +CreateResponseOptions options = new() +{ + Model = "gpt-5.6", + BackgroundModeEnabled = true, +}; +options.InputItems.Add( + ResponseItem.CreateUserMessageItem("Write a very long novel about otters in space.") +); + +ResponseResult response = await client.CreateResponseAsync(options); +Console.WriteLine(response.Status); +``` + ```ruby require "openai" @@ -119,9 +139,9 @@ puts(response.status) ## 轮询后台响应 -若要检查后台请求的状态,请使用 Responses 的 GET 端点。当请求处于 queued 或 in_progress 状态时持续轮询。一旦离开这些状态,请求即已进入最终(终态)状态。 +要检查后台请求的状态,请使用针对 Responses 的 GET 端点。当请求处于 queued 或 in_progress 状态时持续轮询。一旦离开这些状态,就表示它已到达最终(终态)状态。 -检索在后台执行的 response +获取在后台执行的 response ```bash curl https://api.openai.com/v1/responses/resp_123 \ @@ -235,6 +255,37 @@ response.output().stream() .forEach(text -> System.out.println(text.text())); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +CreateResponseOptions options = new() +{ + Model = "gpt-5.6", + BackgroundModeEnabled = true, +}; +options.InputItems.Add( + ResponseItem.CreateUserMessageItem("Write a very long novel about otters in space.") +); + +ResponseResult created = await client.CreateResponseAsync(options); +ResponseResult response = await client.GetResponseAsync(created.Id); +while (response.Status is ResponseStatus.Queued or ResponseStatus.InProgress) +{ + await Task.Delay(TimeSpan.FromSeconds(1)); + response = await client.GetResponseAsync(response.Id); +} +if (response.Status != ResponseStatus.Completed) +{ + throw new InvalidOperationException($"Background response ended with status: {response.Status}"); +} +Console.WriteLine($"Status: {response.Status}"); +Console.WriteLine(response.GetOutputText()); +``` + ```ruby require "openai" @@ -323,6 +374,19 @@ var response = client.responses().cancel(responseId); System.out.println(response.status()); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +string responseId = "resp_123"; + +ResponseResult response = await client.CancelResponseAsync(responseId); +Console.WriteLine(response.Status); +``` + ```ruby require "openai" @@ -332,15 +396,15 @@ puts(response.status) ``` -重复取消是幂等的——后续调用只会直接返回最终的 `Response` 对象。 +重复取消是幂等的,后续调用只会返回最终的 `Response` 对象。 ## 流式传输后台响应 -你可以创建一个后台 Response,并立即开始从其中流式传输事件。如果你预期客户端会断开流,并希望保留之后重新接回的选项,这可能会很有帮助。要做到这一点,请在创建 Response 时同时设置 `background` 和 `stream` 设置为 `true`。你需要追踪一个与每个流式事件中收到的 `sequence_number` 相对应的“游标”(cursor)。 +你可以创建一个后台 Response,并立即开始从中流式传输事件。如果你预计客户端会中断流,并希望保留稍后恢复的选项,这会很有用。要实现这一点,需要在创建 Response 时同时指定 `background` 和 `stream` 设置为 `true`。你需要跟踪一个 “cursor”(游标),它对应于每个流式事件中收到的 `sequence_number` 。 目前,从后台响应中收到首个 token 的时间 - 高于同步响应。我们正在努力在未来几周内缩短这一延迟差距。 - 这一延迟差距将在未来几周内得到缩小。 + 高于从同步响应中收到的时间。我们将在未来几周内着力缩短 + 这一延迟差距。 生成并流式传输后台响应 @@ -524,6 +588,91 @@ if (!streamCompleted.get()) { } ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +CreateResponseOptions options = new() +{ + Model = "gpt-5.6", + BackgroundModeEnabled = true, + StreamingEnabled = true, +}; +options.InputItems.Add( + ResponseItem.CreateUserMessageItem("Write a very long novel about otters in space.") +); + +string? responseId = null; +int lastSequenceNumber = -1; +bool completed = false; + +void HandleUpdate(StreamingResponseUpdate update) +{ + lastSequenceNumber = update.SequenceNumber; + switch (update) + { + case StreamingResponseCreatedUpdate created: + responseId = created.Response.Id; + break; + case StreamingResponseOutputTextDeltaUpdate text: + Console.Write(text.Delta); + break; + case StreamingResponseCompletedUpdate: + completed = true; + break; + case StreamingResponseFailedUpdate: + throw new InvalidOperationException("The background response failed."); + case StreamingResponseIncompleteUpdate: + throw new InvalidOperationException("The background response was incomplete."); + case StreamingResponseErrorUpdate error: + throw new InvalidOperationException($"The response stream failed: {error.Message}"); + } +} + +try +{ + await foreach ( + StreamingResponseUpdate update in client.CreateResponseStreamingAsync(options) + ) + { + HandleUpdate(update); + } +} +catch (Exception error) + when (error is HttpRequestException or IOException && responseId is not null) +{ + // The background response continues after its streaming connection is interrupted. +} + +if (!completed) +{ + if (responseId is null) + { + throw new InvalidOperationException("The response stream ended before providing its ID."); + } + + GetResponseOptions resumeOptions = new(responseId) + { + StartingAfter = lastSequenceNumber, + StreamingEnabled = true, + }; + await foreach (StreamingResponseUpdate update in client.GetResponseStreamingAsync(resumeOptions)) + { + HandleUpdate(update); + } + + if (!completed) + { + throw new InvalidOperationException( + "The resumed response stream ended before the background response completed." + ); + } +} +``` + ```ruby require "openai" @@ -558,4 +707,4 @@ puts("Response #{response_id}; last sequence number #{last_sequence_number}") 1. 后台请求可以使用 `store=false`,但响应数据会被临时 存储以支持异步执行和轮询。 2. 若要取消同步响应,请终止连接 -3. 只有在使用以下方式创建后台响应后,才能从该响应开始新的流式输出 `stream=true`. \ No newline at end of file +3. 仅当使用以下方式创建后台响应时,才能从该响应开启新的流 `stream=true`. \ No newline at end of file diff --git a/docs/zh/api/docs/guides/code-generation.md b/docs/zh/api/docs/guides/code-generation.md index 3bb0cc0..44dae77 100644 --- a/docs/zh/api/docs/guides/code-generation.md +++ b/docs/zh/api/docs/guides/code-generation.md @@ -1,31 +1,31 @@ # 代码生成 -> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取文档页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -编写、审查、编辑代码以及回答代码相关问题,是 OpenAI 模型当前最主要的用途之一。本指南将介绍你使用 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 Codex 进行代码生成的多种方案。 +编写、审查、编辑代码以及回答与代码相关的问题是 OpenAI 模型如今最主要的用途之一。本指南将介绍你使用 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 Codex 进行代码生成的多种方案。 ## 入门 - - **[使用 Codex 开箱即用的编码智能体](#use-codex)**:将你的代码库连接到 Codex,并使用软件工程智能体加速你的项目。 -- **[集成编码模型](#integrate-with-coding-models)**:在你的应用中使用 OpenAI 模型。例如,可以将它们添加到模型选择器中。 + - **[使用 Codex 开箱即用的编码智能体](#use-codex)**: 将你的代码库接入 Codex,使用软件工程智能体加速你的项目。 +- **[集成编码模型](#integrate-with-coding-models)**: 在你的应用中使用OpenAI模型,例如将它们添加到模型选择器中。 ## 使用 Codex -[**Codex**](https://developers.openai.com/codex) 是 OpenAI 用于软件开发的编码 智能体。它可以帮助你编写、审查和调试代码。你可以通过多种界面与 Codex 交互:在你的 IDE 中、通过 CLI、在网页和移动端站点上,或在 CI/CD 流水线中配合 SDK 使用。Codex 是在你的项目中获得智能体化软件工程能力的最佳方式。 +[**Codex**](https://developers.openai.com/codex) 是 OpenAI 面向软件开发的编码智能体。它可以帮助你编写、审查和调试代码。你可以在多种界面中使用 Codex:在 IDE 中、通过 CLI、在 Web 和移动端网站上,或在 CI/CD 流水线中配合 SDK 使用。Codex 是在你的项目上获得智能体式软件工程能力的最佳方式。 -Codex 与来自 GPT-5 系列的最新模型配合效果最佳,例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol)。我们提供了一系列专为 Codex 这类编码 智能体 设计的模型,例如 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex),但对于大多数代码生成任务,我们推荐使用最新的通用模型。 +Codex 与 GPT-5 系列的最新模型配合效果最佳,例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol)。我们提供了一系列专为 Codex 这类编码智能体设计的模型,例如 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex),但我们建议在大多数代码生成任务中使用最新的通用模型。 -请参阅 [ChatGPT 文档](https://developers.openai.com/codex) 获取设置指南、参考资料、价格及更多信息。 +请参阅 [ChatGPT 文档](https://developers.openai.com/codex) ,获取设置指南、参考资料、定价及更多信息。 ## 与编程模型集成 -对于大多数基于API的代码生成,请从 **`gpt-5.6`**。开始。它既可以处理通用任务,也可以处理编码任务,因此当你的应用需要在同一处完成代码编写、需求推理、文档查阅以及更广泛的工作流处理时,它是一个很好的默认选择。 +对于大多数基于 API 的代码生成任务,可以从 **`gpt-5.6`**。入手。它既适用于通用任务,也适用于编码任务,因此当你的应用需要在一个地方完成编写代码、推理需求、检查文档以及处理更广泛的工作流时,它是稳妥的默认选择。 -下面的示例展示了如何将 [Responses API](https://developers.openai.com/api/reference/resources/responses) 用于代码生成场景: +以下示例展示了你如何将 [Responses API](https://developers.openai.com/api/reference/resources/responses) 用于代码生成场景: 大多数编码任务的默认模型 @@ -128,6 +128,38 @@ client.responses().create(params).output().stream() .forEach(text -> System.out.println(text.text())); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +CreateResponseOptions options = new() +{ + Model = "gpt-5.6", + ReasoningOptions = new ResponseReasoningOptions + { + ReasoningEffortLevel = ResponseReasoningEffortLevel.High, + }, +}; +options.InputItems.Add( + ResponseItem.CreateUserMessageItem( + """ + Find the null pointer exception in this code: + + def display_name(user): + return user.profile.name + + print(display_name(None)) + """ + ) +); + +ResponseResult response = await client.CreateResponseAsync(options); +Console.WriteLine(response.GetOutputText()); +``` + ```ruby require "openai" @@ -162,12 +194,12 @@ curl https://api.openai.com/v1/responses \ ## 前端开发 -GPT-5 系列模型在前端开发方面尤为出色,尤其是与 Codex 等编码智能体框架结合使用时。 +我们 GPT-5 系列模型在前端开发方面表现出色,尤其是与 Codex 这类编码智能体框架配合使用时。 -以下演示应用是一次性生成的,即由单条提示生成,没有手写代码。可使用它们评估前端生成质量以及面向 UI 的代码生成工作流的提示模式。 +下面的演示应用都是一次性生成的,即由单个提示生成,没有手写代码。可用于评估前端生成质量以及面向 UI 密集型代码生成工作流的提示模式。 -## 后续步骤 +## Next steps -- 访问 [ChatGPT 文档](https://developers.openai.com/codex) ,了解 Codex 的功能、在你选择的界面中配置 Codex,或查找更多详细信息。 -- 阅读 [模型指南](https://developers.openai.com/api/docs/guides/latest-model) ,获取模型选择、功能、迁移指南以及在编码和智能体任务中效果良好的提示模式。 -- 在模型页面中比较 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex) 。 \ No newline at end of file +- 访问 [ChatGPT 文档](https://developers.openai.com/codex) 了解你可以使用 Codex 做什么,在你选择的任意界面中设置 Codex,或查找更多详细信息。 +- 阅读 [模型指南](https://developers.openai.com/api/docs/guides/latest-model) 获取模型选择、功能、迁移指南以及在编码和智能体任务中效果良好的提示模式。 +- 比较 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 并 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex) ,详见模型页面。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/compaction.md b/docs/zh/api/docs/guides/compaction.md index 0efc061..0a235b5 100644 --- a/docs/zh/api/docs/guides/compaction.md +++ b/docs/zh/api/docs/guides/compaction.md @@ -1,56 +1,82 @@ -# 压缩 +# Compaction -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾附加 `.md` 即可获取该页面的 Markdown 版本。 ## 概述 为了支持长时间运行的交互,你可以使用压缩来减少上下文 大小,同时保留后续轮次所需的状态。 -随着对话增长,压缩可帮助你平衡质量、成本和延迟。 +随着对话不断增长,压缩可以帮助你平衡质量、成本和延迟。 ## 服务端压缩 -你可以在 Responses 创建请求中启用服务端压缩 -(`POST /responses` 或 `client.responses.create`)通过设置 -`context_management` 使用 `compact_threshold`. +你可以在 Responses 创建请求中通过设置 +(`POST /responses` 或 `client.responses.create`),方法是设置 +`context_management` 通过 `compact_threshold`. - 当渲染后的 token 数量超过配置的阈值时,服务端 - 会执行 服务端 压缩。 -- 无需单独 `/responses/compact` 在此模式下发起调用。 -- 响应流中会包含加密的压缩条目。 -- ZDR 说明:当你将 服务端 压缩设置为 `store=false` - 在 Responses 创建请求中时,该压缩对 ZDR 友好。 - -返回的压缩条目会将先前关键状态和推理带入 -下一次运行,且使用的 token 更少。该条目是不透明的,无需 -人工解读。 - -对于无状态的输入数组链接,照常追加输出条目。如果你 -使用 `previous_response_id`,则每次只传入新的用户消息。在这两种 -情况下,压缩条目都会承载下一个窗口所需的上下文。 - -延迟提示:在将输出条目追加到先前的输入条目之后,你可以 -丢弃最近压缩条目之前的条目,以保持请求 -体积更小并降低长尾延迟。最新压缩条目承载着 -继续对话所需的必要上下文。如果你使用 -`previous_response_id` 链接,请勿手动裁剪。 + 执行 服务端 压缩。 +- 在此模式下无需 `/responses/compact` 额外调用。 +- 响应流中会包含加密的压缩项。 +- ZDR 说明:当你为 Responses 的 create 请求设置 `store=false` + 时,服务端 压缩是 ZDR 友好的。 + +返回的压缩项会将先前关键的状态和推理延续到 +下一次运行,且使用的 token 更少。它是不透明的,不用于 +人类阅读理解。 + +对于无状态的输入数组链式调用,照常追加输出项。如果你在 +使用 `previous_response_id`,则每一轮只传入新的用户消息。在两种情况下, +压缩项都会携带下一窗口所需的上下文。 + +延迟提示:将输出项追加到先前的输入项之后,你可以 +丢弃最近一个压缩项之前的那些项,以保持请求体量更小、 +并降低长尾延迟。最新压缩项已携带继续对话所需的必要上下文。如果你使用 +链式调用,请勿手动裁剪。 +`previous_response_id` 链式调用,请勿手动裁剪。 ## 用户旅程 -1. 像往常一样调用 `/responses` ,但传入 `context_management` ,并附带 - `compact_threshold` 以启用服务端压缩。 +1. 像往常一样调用 `/responses` ,但需包含 `context_management` 参数以启用 + `compact_threshold` 以启用 服务端压缩。 2. 在响应流式传输过程中,如果上下文大小超过阈值,服务端 会触发一次压缩过程,在同一流中输出一个压缩输出项, 并在继续推理前裁剪上下文。 -3. 用统一模式延续你的循环:无状态输入数组链式调用(将 - 输出(包括压缩项)追加到下一次输入数组),或者 - `previous_response_id` 链式调用(每轮只传入新的用户消息,并 - 在后续轮次中传递该 ID)。 +3. 你的循环可以采用以下两种模式之一继续: + 无状态输入数组链接(将输出(包括压缩项)追加到下一次输入数组中),或者 + `previous_response_id` 链接(每轮仅传入新的用户消息,并 + 将该 ID 传递下去)。 -## 示例用户流程 +## 用户流程示例 + +```javascript +import OpenAI from "openai"; +import { toResponseInputItems } from "openai/lib/responses/ResponseInputItems"; + +const client = new OpenAI(); + +/** @type {import("openai/resources/responses/responses").ResponseInput} */ +const conversation = [ + { + type: "message", + role: "user", + content: "Let's begin a long coding task.", + }, +]; + +const response = await client.responses.create({ + model: "gpt-5.3-codex", + input: conversation, + store: false, + context_management: [{ type: "compaction", compact_threshold: 200_000 }], +}); + +conversation.push(...toResponseInputItems(response.output)); +console.log(response.output_text); +``` ```python conversation = [ @@ -224,40 +250,73 @@ puts(next_response.output_text) ## 独立紧凑端点 -如需进行显式控制,请使用 -[独立的 compact 接口](https://developers.openai.com/api/reference/resources/responses/methods/compact) 在长时间运行的工作流中进行 -无状态的上下文压缩。 +若需显式控制,可使用 +[独立的 compact 端点](https://developers.openai.com/api/reference/resources/responses/methods/compact) 在长时间运行的 +工作流中进行无状态压缩。 -该接口完全无状态且兼容 ZDR。 +该端点完全无状态,并且兼容 ZDR。 -你发送一个完整的上下文窗口(消息、工具以及其他项),该 -接口会返回一个新的已压缩上下文窗口,你可以将其传递给下一次 +你发送一个完整的上下文窗口(messages、tools 以及其他 items),该 +端点会返回一个压缩后的新上下文窗口,供你直接传入下一次 `/responses` 调用。 -返回的已压缩窗口包含一个加密的压缩项,该项使用更少的 token -携带先前的关键状态与推理信息。它是不透明的,并不需要 -人类可读。 +返回的压缩窗口包含一个加密的压缩项,它以更少的 tokens 转发关键先前的状态 +和推理过程。该项是 opaque 的,不需要人类去解读其含义。 +它的存在并不以人类可读为目的。 -注意:已压缩的窗口通常不仅仅包含压缩 -项,它还可以包含来自上一个窗口的保留项。 +注意:压缩后的窗口通常包含的内容不止压缩项 +本身,它还可能包含来自上一个窗口中保留的 items。 输出处理:不要裁剪 `/responses/compact` 输出。返回的窗口 -是规范的下一次上下文窗口,因此请将其原样传递给下一次 `/responses` +即下一次上下文的规范内容,请原样将其传入下一次 `/responses` 调用。 ### 独立压缩的用户旅程 -1. 使用 `/responses` 正常方式,发送的输入项包含用户消息、 - 助手输出和工具交互。 -2. 当你的上下文窗口变大时,调用 `/responses/compact` 来生成一个 +1. 使用 `/responses` 时,通常发送包含用户消息、 + 助手输出和工具交互的输入项。 +2. 当你的上下文窗口变大时,调用 `/responses/compact` 以生成一个 新的压缩后上下文窗口。你发送给 `/responses/compact` - 的内容仍必须适合你模型的上下文窗口。 + 的窗口仍然必须适合你模型的上下文窗口。 3. 对于后续的 `/responses` 调用,传入返回的压缩后窗口 - (包含压缩项)作为输入,而不是完整的对话记录。 + (包括压缩项)作为输入,而不是完整的对话记录。 -### 示例用户流程 +### 用户流程示例 + +```javascript +import OpenAI from "openai"; + +const client = new OpenAI(); + +/** @type {import("openai/resources/responses/responses").ResponseInput} */ +const conversation = [{ role: "user", content: "Plan a trip to Kyoto." }]; + +const compacted = await client.responses.compact({ + model: "gpt-5.6", + input: conversation, +}); + +/** @type {import("openai/resources/responses/responses").ResponseInput} */ +const nextInput = [ + ...compacted.output.map( + (item) => + /** @type {import("openai/resources/responses/responses").ResponseInputItem} */ ( + item + ) + ), + { role: "user", content: "Add two more days to the itinerary." }, +]; + +const response = await client.responses.create({ + model: "gpt-5.6", + input: nextInput, + store: false, +}); + +console.log(response.output_text); +``` ```python # Full window collected from prior turns diff --git a/docs/zh/api/docs/guides/content-provenance.md b/docs/zh/api/docs/guides/content-provenance.md index e15d34d..3cf6584 100644 --- a/docs/zh/api/docs/guides/content-provenance.md +++ b/docs/zh/api/docs/guides/content-provenance.md @@ -1,52 +1,67 @@ -# 内容来源 +# Content provenance -> 完整的文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 来获取。 使用 Content Provenance API 来检查图像或音频文件是否包含 -支持的 OpenAI 来源信号。将文件发送到 -`POST /v1/content_provenance_checks` 以在同一个响应中接收完整的验证 -结果。在内容审核、 -事实核查、标注以及信任与安全工作流中使用这些信号。 +受支持的 OpenAI 出处信号。将文件发送至 +`POST /v1/content_provenance_checks` 即可在同一次响应中收到完整的验证结果 +你可以将这些信号用于内容审核、 +事实核查、标注以及信任与安全工作流中。 -若要在浏览器中检查文件,请使用以下网页工具: +要在浏览器中检查文件,请使用以下网页工具: [openai.com/verify](https://openai.com/verify/). 有关请求参数和响应架构,请参阅 -[Content provenance API 参考](https://developers.openai.com/api/reference/resources/content_provenance_checks/methods/create). +[Content provenance API reference](https://developers.openai.com/api/reference/resources/content_provenance_checks/methods/create). -一个 `not_detected` 结果表示该工具在上传文件中未找到支持的信号。如果元数据被去除或显示出篡改痕迹、水印被削弱、文件来自旧版生成模型,或者在来源信号推出之前生成,相应内容仍可能由 OpenAI 生成。 - 该工具当前无法检测由另一家公司的 AI 模型生成的内容,因此 - 结果也无法排除这种可能。 - result means the tool didn't find supported signals in the - uploaded file. Content may still have been generated by 该公司 if its metadata - was stripped or shows evidence of tampering, its watermark was degraded, it `not_detected` came from a legacy generation model, or it was created before provenance - signals were available. The tool doesn't currently detect content generated by。 +一个 `not_detected` 结果表示该工具未在上传的文件中找到受支持的信号。 + 如果其元数据被剥离或显示被篡改的痕迹、水印已降级、OpenAI 仍可能生成了该内容,例如它来自旧版生成模型,或在出处信号可用之前就已创建。 + 其元数据被剥离或显示被篡改的痕迹、水印已降级,它 + 来自旧版生成模型,或在出处信号可用之前就已创建。 + 该工具目前无法检测由其他公司 AI 模型生成的内容,因此 + 结果也无法排除这种可能。 `not_detected` 结果并不能排除 + 这种情况。 -## 内容来源检测 +## 内容来源检查 -内容溯源检查支持以下信号的文件: +内容溯源检查针对以下信号支持文件: | Signal | 适用范围 | 检测内容 | | ------------------------ | ---------------- | ------------------------------------------------ | -| C2PA Content Credentials | 图像 | 包含签发者和 AI 使用详情的签名元数据 | -| SynthID | 图像和音频 | 直接嵌入到受支持媒体中的水印 | +| C2PA Content Credentials | 图像 | 包含颁发者和 AI 使用信息的签名元数据 | +| SynthID | 图像和音频 | 直接嵌入受支持媒体中的水印 | -C2PA 元数据可提供有关文件来源的更多上下文。编辑、转换, -或共享文件可能会移除其元数据。SynthID 水印是图像或音频本 -身的一部分,可能会在某些转换后保留下来。 +C2PA 元数据提供了关于文件来源的更多上下文。编辑、转换, +或共享文件可能会移除其元数据。SynthID 水印是 +图像或音频本身的一部分,可能会在某些转换后保留下来。 -API 会检查受支持的 OpenAI 信号。它不是通用的 AI -检测器,无法识别每个 AI 系统生成的内容。可见的水印与标识不同于 API 所检查的来源信号。 -检测器,无法识别每个 AI 系统生成的内容。可见的水印与标识不同于 接口 所检查的来源信号。 -检测器,无法识别每个 AI 系统生成的内容。可见的水印与标识不同于 接口 所检查的来源信号。 +该 API 会检查支持的 OpenAI 信号。它并非通用的 AI +检测器,无法识别每个 AI 系统所生成的内容。可见 +水印和标签与所检查的溯源信号是分开的 +API。 -## 验证文件 +## 校验文件 -将图像或音频文件作为 `file` 字段,配合 OpenAI SDK 一起发送。SDK -会构建 multipart 请求,并从 `OPENAI_API_KEY` -环境变量中读取你的 API 密钥: +将图片或音频文件作为 `file` 字段通过 OpenAI SDK 发送。SDK +会构建 multipart 请求,并从环境变量中读取你的 API 密钥: `OPENAI_API_KEY` +环境变量: -验证图像 +验证图片 + +```javascript +import { createReadStream } from "node:fs"; +import OpenAI, { toStreamingFile } from "openai"; + +const client = new OpenAI(); + +const result = await client.contentProvenanceChecks.create({ + file: toStreamingFile(createReadStream("myimage.png"), "myimage.png", { + type: "image/png", + }), +}); + +console.log(result); +``` ```python from openai import OpenAI @@ -113,10 +128,10 @@ curl https://api.openai.com/v1/content_provenance_checks \ ``` -请使用以下 OpenAI SDK 版本或更高版本:Python 2.52.0、Go 3.49.0,以及 Ruby +请使用以下 OpenAI SDK 版本或更高版本:Python 2.52.0、Go 3.49.0 和 Ruby 0.75.0。 -若要验证 Opus 音频,请使用同一个端点,并将上传文件的媒体 +若要验证 Opus 音频,请使用相同的端点,并将上传文件的媒体 类型设置为 `audio/ogg`: ```bash @@ -125,7 +140,7 @@ curl https://api.openai.com/v1/content_provenance_checks \ -F "file=@./example.opus;type=audio/ogg" ``` -响应中会包含完整的结果。例如,图像会返回: +响应包含完整的结果。例如,图片返回: ```json { @@ -150,30 +165,30 @@ curl https://api.openai.com/v1/content_provenance_checks \ } ``` -该 `object` 字段标识该响应, `created_at` 是此次检查的 +该 `object` 字段用于标识响应,而 `created_at` 是检查的 创建时间,以 Unix 时间戳(秒)表示。 `results` 中的条目取决于 -上传的文件:图像包含 C2PA 和 SynthID 结果,音频包含 +上传的文件:图片包含 C2PA 和 SynthID 结果,音频包含 SynthID 结果。API 会省略不适用的检查项,而不是返回 `not_detected`. API 会在返回之前完成验证。你无需创建 后台任务、轮询其他端点,或将文件上传到 Files API。 -如果请求失败,请检查 HTTP 状态码和 `error.code` 可用时使用。一个 -格式错误、不受支持或被阻止的文件会返回 `400`;没有访问权限的组织会收到 -;超过速率限制的请求会返回 `404`。仅对临时性失败(例如速率限制或服务器错误)进行重试。有关一般性指导, `429`。请参阅 -临时性失败(例如速率限制或服务器错误)进行重试。有关一般性指导, -参阅 [API 错误代码](https://developers.openai.com/api/docs/guides/error-codes). +如果请求失败,请检查 HTTP 状态码和 `error.code` 当可用时。A +格式错误、不支持或被阻止的文件返回 `400`;没有 +访问权限的组织收到 `404`;超出速率限制的请求返回 `429`。仅重试 +瞬时故障,例如速率限制或服务端错误。有关一般指南, +请参阅 [API 错误代码](https://developers.openai.com/api/docs/guides/error-codes). ## 了解验证结果 -独立读取每个适用的条目。 `results` 图像结果包含 C2PA 和 SynthID 条目,而音频结果包含 SynthID 条目。 -C2PA 和 SynthID 条目,而音频结果包含 SynthID 条目。 -响应不包含顶层 `outcome`. +独立地阅读每个适用的条目 `results` 图片结果包含 +C2PA 和 SynthID 条目,而音频结果包含一个 SynthID 条目。 +响应中不包含顶级 `outcome`. -### C2PA 结果 +### C2PA results -C2PA 结果描述图像内容凭证的状态: +C2PA 结果描述了图像的内容凭据状态: ```json { @@ -186,30 +201,30 @@ C2PA 结果描述图像内容凭证的状态: } ``` -字段使用方式如下: +各字段的使用方式如下: -- `outcome` 指示 OpenAI 颁发的 AI 生成凭据是否被 +- `outcome` 指示是否使用了 OpenAI 颁发的 AI 生成凭据 `detected` 或 `not_detected`. -- `validation_state` 指示清单是否被 `trusted`, `valid`, +- `validation_state` 指示清单是否处于 `trusted`, `valid`, `invalid`,还是 `not_present`. -- `issuer` 在可用时标识清单的颁发方。 -- `model` 在可用时标识生成模型。 -- `generated_at` 在可用时标识内容的生成时间, +- `issuer` 在信息可用时识别清单的颁发者。 +- `model` 在信息可用时识别生成内容的模型。 +- `generated_at` 在信息可用时识别内容生成时间 。 -该结果仅在 `detected` 清单中才会出现,即当一份 `trusted` 或 `valid` 清单将 OpenAI 标识为其颁发者并包含一项 AI 生成操作时。 -不包含 AI 生成操作的清单、或非 C2PA 清单,均不会产生该结果。该结果只能表明一张图像附带了有效的 C2PA 清单: -第三方清单、不含 AI 生成操作的清单、或 `invalid` 清单,均不会 -一个 `not_present` 清单会产生该结果 `not_detected`。该 `issuer` 和 -`validation_state` 仍然可以在结果为 +结果是 `detected` 仅当某个 `trusted` 或 `valid` 清单将 +OpenAI 标识为签发者并包含一项 AI 生成操作时,才会得到该结果。第三方 +清单、不含 AI 生成操作的清单、 `invalid` 清单,或 +一个 `not_present` 清单会得到 `not_detected`。 `issuer` 和 +`validation_state` 仍然可以描述某个清单,即使结果为 `not_detected`. -不要将缺少 `invalid` 清单的图像视为可靠的来源证据。 -`not_present` 结果意味着该图像没有可用的 C2PA 清单。 +请勿将 `invalid` 清单视为可靠的可溯源证据。 +`not_present` 结果表示该图像没有可用的 C2PA 清单。 ### SynthID 结果 -SynthID 结果用于描述验证器是否在图像或音频文件中检测到支持的水印 +SynthID 结果描述验证器是否在图像或音频文件中检测到了受支持的水印 : ```json @@ -221,57 +236,57 @@ SynthID 结果用于描述验证器是否在图像或音频文件中检测到支 } ``` -结果为 `detected` 表示文件包含已识别的水印。结果为 -表示 `not_detected` 表示验证器未检测到该水印。这 -并不排除内容是由 AI 生成或由 AI 修改的可能。 `model` 和 +结果为 `detected` 意味着该文件包含已被识别的水印。结果为 +结果为 `not_detected` 意味着验证器未检测到该水印。这 +并不排除内容由 AI 生成或经 AI 修改的可能。 `model` 和 `generated_at` 在可用时提供生成模型和生成时间; -任一字段都可以 `null`. +任一字段可以 `null`. ## 支持的格式与可用性 API 支持以下文件格式: -- **图像:** PNG、JPEG 和 WebP。 -- **音频:** MP3、Opus、AAC、FLAC、WAV 和 PCM。 +- **Images:** PNG、JPEG 和 WebP。 +- **Audio:** MP3、Opus、AAC、FLAC、WAV 和 PCM。 -将每个上传的文件限制为 50 MiB 以内。音频解码后时长必须不超过 60 秒。 -解码。 +将每个上传的文件限制为 50 MiB 以内。音频解码后长度必须为 60 秒或更短 +。 设置上传 `file` 部分的媒体类型。例如,使用 `image/png` 表示 PNG -图像,或 `audio/ogg` 表示 Opus 音频。不要添加单独的 `type` 字段或 -手动设置 `multipart/form-data` 请求头。 `curl` `-F` 选项 -会设置请求内容类型和 multipart boundary。每个请求只发送一个文件。 +图片,或使用 `audio/ogg` 表示 Opus 音频。无需添加额外的 `type` 字段,也无需手动 +设置 `multipart/form-data` 请求标头。 `curl` `-F` 选项 +会设置请求的内容类型和 multipart boundary。每个请求发送一个文件。 -内容来源检查不适用于 +内容溯源检查不适用于 [零数据保留](https://developers.openai.com/api/docs/guides/your-data#zero-data-retention). 严格的速率限制有助于保护 API 免遭滥用。组织可以 -[申请更高的限额](https://openai.com/form/content-provenance-api/),并且 +[申请更高的限额](https://openai.com/form/content-provenance-api/),且 OpenAI 会逐案审核每份申请。 如果 API 返回 `429 rate_limit_exceeded`,请降低你的请求速率并 -honor the `Retry-After` header when present. See -[速率限制](https://developers.openai.com/api/docs/guides/rate-limits) 以了解常规重试指南。 +遵守 `Retry-After` header(如果存在)。请参阅 +[速率限制](https://developers.openai.com/api/docs/guides/rate-limits) 以获取通用重试指导。 ## 负责任地使用验证结果 -在更广泛的审查流程中,将验证结果作为依据: +在更广泛的评审流程中将验证结果作为证据: - 将 `detected` 视为特定受支持信号的证据,而非文件的完整 历史记录。 -- 将 `not_detected` 视为未检测到相关证据,而非证明该 - 内容是人类创作或未使用 OpenAI 生成。 -- 在将图像归属于特定提供方之前,请先检查 C2PA 颁发方。 -- 如有可能,请核实原始文件。压缩、裁剪、截屏、 - 元数据删除以及格式转换都可能会抹除或削弱信号。 -- 综合考虑来源产品、模型、文件格式以及创建日期。 - 并非所有 OpenAI 生成的内容都包含受支持的信号。 -- 在高风险工作流中,将自动化决策与人工审核结合使用。 -- 不要通过重复查询来逆向工程、去除或规避水印。 +- 将 `not_detected` 视为未检测到证据,而非证明该 + 内容是人工创建的,或未使用OpenAI生成。 +- 在将图片归属于特定提供商之前,请检查 C2PA 颁发者。 +- 尽可能核实原始文件。压缩、裁剪、截图、 + 元数据移除以及格式转换都可能削弱或消除信号。 +- 考虑来源产品、模型、文件格式和创建日期。 + 并非所有OpenAI生成的内容都包含受支持的信号。 +- 在高风险工作流中,将自动决策与人工审核结合使用。 +- 不要通过重复查询来逆向工程、移除或规避水印。 - 不要从验证 - 结果中推断提示词、账户或个人创建者。 + 结果中推断提示词、账户或个人创作者。 -使用 Content Provenance API 须遵守 +使用内容溯源 API 须遵守 [OpenAI 服务协议](https://openai.com/policies/services-agreement/). 有关全平台监控和保留设置的信息,请参阅 diff --git a/docs/zh/api/docs/guides/flex-processing.md b/docs/zh/api/docs/guides/flex-processing.md index 55d7b2a..9478e5f 100644 --- a/docs/zh/api/docs/guides/flex-processing.md +++ b/docs/zh/api/docs/guides/flex-processing.md @@ -1,17 +1,17 @@ -# Flex 处理 +# Flex processing -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页的 Markdown 版本。 -Flex 处理以更低的成本提供 [Responses](https://developers.openai.com/api/reference/resources/responses) 或 [Chat Completions](https://developers.openai.com/api/reference/resources/chat) 请求,但响应时间会更慢,且资源偶尔不可用。它非常适合非生产或优先级较低的任务,例如模型评估、数据富集和异步工作负载。 +Flex 处理以更慢的响应速度和偶尔的资源不可用为代价,为 [Responses](https://developers.openai.com/api/reference/resources/responses) 或 [Chat Completions](https://developers.openai.com/api/reference/resources/chat) 请求提供更低的成本。它非常适合非生产环境或较低优先级的任务,例如模型评估、数据丰富和异步工作负载。 -Tokens 的 [定价](https://developers.openai.com/api/docs/pricing) 为 [Batch API 费率](https://developers.openai.com/api/docs/guides/batch),并可叠加 [prompt caching](https://developers.openai.com/api/docs/guides/prompt-caching). +Token 按 [Batch API 费率](https://developers.openai.com/api/docs/pricing) 定价 [Batch 接口 rates](https://developers.openai.com/api/docs/guides/batch),并可通过 [prompt caching](https://developers.openai.com/api/docs/guides/prompt-caching). -Flex 处理目前处于测试阶段,支持的模型有限。支持的模型 +Flex 处理目前为测试版,模型可用性有限。受支持的模型 列于 [定价页面](https://developers.openai.com/api/docs/pricing?latest-pricing=flex). -## API 用量 +## API 使用情况 -要使用 Flex 处理,请在 `service_tier` 参数设置为 `flex` 在你的 API 请求中: +要使用 Flex 处理,请将 `service_tier` 参数设置为 `flex` ,在你的 API 请求中: Flex 处理示例 @@ -105,6 +105,28 @@ client.responses().create(params).output().stream() .forEach(text -> System.out.println(text.text())); ``` +```csharp +using System.ClientModel; +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClientOptions clientOptions = new() { NetworkTimeout = TimeSpan.FromMinutes(15) }; +ResponsesClient client = new(new ApiKeyCredential(key), clientOptions); + +CreateResponseOptions options = new() +{ + Model = "gpt-5.6", + Instructions = "List and describe all the metaphors used in this book.", + ServiceTier = ResponseServiceTier.Flex, +}; +options.InputItems.Add(ResponseItem.CreateUserMessageItem("")); + +using CancellationTokenSource timeout = new(TimeSpan.FromMinutes(15)); +ResponseResult response = await client.CreateResponseAsync(options, timeout.Token); +Console.WriteLine(response.GetOutputText()); +``` + ```ruby require "openai" @@ -138,18 +160,18 @@ curl https://api.openai.com/v1/responses \ #### API 请求超时 -由于 Flex 处理速度较慢,请求更容易超时。以下是处理超时的一些注意事项: +由于 Flex 处理的处理速度较慢,请求超时更容易出现。以下是处理超时的一些注意事项: -- **默认超时**:使用官方 **10 分钟** 在使用官方 OpenAI SDK 发起 API 请求时生效。对于较长的提示或复杂的任务,你可能需要增大该超时值。 -- **配置超时时间**:每个 SDK 都会提供用于延长该超时时间的参数。在 Python 和 JavaScript SDK 中,该参数为 `timeout` ,如上述代码示例所示。 -- **自动重试**:OpenAI SDK 会在抛出异常前自动重试返回 `408 Request Timeout` 错误码的请求两次。 +- **Default timeout**:默认超时时间为 **10 分钟** ,适用于使用官方 API 和 OpenAI SDK 发起的请求。对于较长的提示或复杂任务,你可能需要增大此超时时间。 +- **配置超时时间**:每个 SDK 都会提供用于增大该超时时间的参数。在 Python 和 JavaScript SDK 中,该参数为 `timeout` ,如上方代码示例所示。 +- **自动重试**:OpenAI SDK 会对返回 `408 Request Timeout` 错误码的请求自动重试两次,之后再抛出异常。 ## 资源不可用错误 -Flex 处理有时可能因资源不足而无法处理你的请求,从而导致 `429 Resource Unavailable` 错误代码。 **发生这种情况时不会向你收取费用。** +Flex 处理有时可能缺乏足够的资源来处理你的请求,从而导致 `429 Resource Unavailable` 错误代码。 **发生这种情况时不会向你收取费用。** -可以考虑采用以下策略来处理资源不可用错误: +考虑实施以下策略来处理资源不可用错误: -- **使用指数退避重试请求**:实现指数退避适用于能够容忍延迟的工作负载,旨在将成本降至最低,因为当有更多可用容量时,你的请求最终可以完成。有关实现细节,请参阅 [此 cookbook](https://developers.openai.com/cookbook/examples/how_to_handle_rate_limits?utm_source=chatgpt.com#retrying-with-exponential-backoff). +- **使用指数退避策略重试请求**:实现指数退避策略适用于可以容忍延迟的工作负载,并且有助于降低成本,因为当有更多可用容量时,你的请求最终可以完成。如需实现细节,请参阅 [此 Cookbook](https://developers.openai.com/cookbook/examples/how_to_handle_rate_limits?utm_source=chatgpt.com#retrying-with-exponential-backoff). -- **使用标准处理重试请求**:当收到资源不可用错误时,如果为了确保用例成功完成而偶尔产生更高成本是可以接受的,请使用标准处理实现重试策略。为此,请在重试请求中将 `service_tier` 设置为 `auto` ,或移除该 `service_tier` 参数以使用项目的默认模式。 \ No newline at end of file +- **使用标准处理方式重试请求**:在收到资源不可用错误时,如果你的用例值得为了确保成功完成而偶尔承担更高的成本,可以采用标准处理的重试策略。为此,请在重试请求中将 `service_tier` 设置为 `auto` ,或者移除 `service_tier` 参数以使用该项目的默认模式。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/image-cost-calculator.md b/docs/zh/api/docs/guides/image-cost-calculator.md new file mode 100644 index 0000000..26c8e1b --- /dev/null +++ b/docs/zh/api/docs/guides/image-cost-calculator.md @@ -0,0 +1,20 @@ +# 图像输入 token 和成本计算器 + +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取文档页面的 Markdown 版本。 + +估算向 OpenAI 视觉模型发送图片所需的输入 token 数量和费用。选择模型,输入图片尺寸,再选择细节级别。 + +如需了解 GPT 图像生成与编辑的费用,请使用 [图像生成计算器](https://developers.openai.com/api/docs/guides/image-generation#calculating-costs). + +## 使用计算器 + +1. 选择你计划使用的视觉模型。 +2. 以像素为单位输入原始图像的宽度和高度。计算器会应用该模型的缩放规则。 +3. 选择模型支持的图像细节级别。 +4. 查看图像输入的 token 数量与预估费用。展开 **计算详情** 以查看缩放后的尺寸和 token 计算过程。 + +## 了解预估量 + +该估算仅按标准输入费率涵盖一张图像,不含其他提示词 token、模型输出、缓存、长上下文定价以及数据驻留调整。计费可能因四舍五入相差一个 token。 + +有关调整和分词规则,请参阅 [图像输入费用计算](https://developers.openai.com/api/docs/guides/images-vision#calculating-costs)。如需了解当前模型费率及其他费用,请参阅 [API 定价](https://developers.openai.com/api/docs/pricing). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/latest-model/gpt-5.6.md b/docs/zh/api/docs/guides/latest-model/gpt-5.6.md index c173ee6..b93749d 100644 --- a/docs/zh/api/docs/guides/latest-model/gpt-5.6.md +++ b/docs/zh/api/docs/guides/latest-model/gpt-5.6.md @@ -7,93 +7,93 @@ latestModelInfo: # 使用 GPT-5.6 -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过将 `.md` 附加到页面 URL 来获取文档页面的 Markdown 版本。 ## 简介 -GPT-5.6 为复杂生产工作流树立了全新的质量和效率基准。GPT-5.6 特别节省 token,并提升了前端美学,包括布局、视觉层次和设计判断力。 +GPT-5.6 为复杂的生产工作流树立了新的质量和效率基线。GPT-5.6 尤其在 token 使用上更为高效,并改善了前端美学,涵盖布局、视觉层次和设计判断。 -GPT-5.6 还引入了新的命名方案。 `gpt-5.6` 别名将请求路由到 `gpt-5.6-sol`,这是旗舰能力的模型。使用 `gpt-5.6-terra` 以更低的价格获得强劲性能, `gpt-5.6-luna` 用于高效、大规模的工作负载。 +GPT-5.6 还引入了新的命名方案。 `gpt-5.6` 别名用于将请求路由到 `gpt-5.6-sol`,它是具备旗舰能力的模型。使用 `gpt-5.6-terra` 可在更低价格下获得强劲性能,使用 `gpt-5.6-luna` 适用于高效、大规模的工作负载。 -从 GPT-5.5 或 GPT-5.4 迁移时,从你当前的 GPT-5.5 或 GPT-5.4 推理设置开始,然后在代表性任务上测试相同的设置和低一级的设置。GPT-5.6 通常能用更少的 token 维持或提升质量,但最佳设置取决于你的工作负载。 +从 GPT-5.5 或 GPT-5.4 迁移时,可以先沿用当前的 GPT-5.5 或 GPT-5.4 推理设置,然后在具有代表性的任务上测试相同设置和低一档的设置。GPT-5.6 通常能在使用更少 token 的同时保持或提升质量,但最佳设置取决于你的工作负载。 ## 新增内容 -- **程序化工具调用:** GPT-5.6 可以编写 JavaScript 来调用符合条件的工具,在调用之间传递结果,并在托管运行时中处理中间输出。使用 [程序化工具调用](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling) 适用于有界的、工具密集型的工作流,这些工作流在每个步骤之间不需要新的模型判断。程序化工具调用兼容 ZDR,且不会产生额外的容器费用。 -- **Multi-智能体 [测试版]:** [Multi-智能体](https://developers.openai.com/api/docs/guides/responses-multi-agent) 让一个 GPT-5.6 实例并行协调多个子智能体,并综合它们的结果。类似于 Codex 中的 ultra 模式,这可以缩短实际运行时间,并提升可清晰拆分为独立工作流的复杂任务的性能。Multi-智能体 在 Responses API 中作为测试版功能提供,以便我们根据开发者反馈持续迭代。 -- **显式提示缓存:** GPT-5.6 允许你精确标记哪些可复用的提示前缀会由 OpenAI 进行缓存。你仍可以在隐式模式下使用自动缓存。OpenAI 对缓存写入按未缓存输入价格的 1.25 倍计费,而缓存读取仍享受折扣。了解如何 [配置提示缓存](https://developers.openai.com/api/docs/guides/prompt-caching). -- **持久化推理:** GPT-5.6 可以在多轮之间复用可用的推理项,以提升多轮质量并提高缓存效率。使用 `reasoning.context` 来选择行为。了解如何 [跨调用保留推理](https://developers.openai.com/api/docs/guides/reasoning#preserve-reasoning-across-calls). -- **最大推理努力程度:** GPT-5.6 支持 `max` 针对需要更多探索和验证的高难度任务的推理努力程度。如果你当前使用 `xhigh`,请在具有代表性的工作负载上对两种设置进行比较。 -- **Pro 模式:** GPT-5.6 可以执行更多模型工作,以提升困难任务的可靠性,并返回单个最终答案。通过 `reasoning.mode: "pro"` 当质量比延迟和 token 用量更重要时。了解如何使用 [使用 pro 模式](https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode). -- **Token 效率:** GPT-5.6 以更少的输出 token 达到前沿性能。 -- **前端设计:** GPT-5.6 能创建更精致、更实用的网站和应用,在布局、视觉层次和设计判断方面表现更强。 -- **意图理解:** GPT-5.6 能够更好地从上下文推断用户的潜在目标和预期的工作深度,因此你通常无需规定每个步骤。请继续提供领域上下文、硬性约束、审批边界和成功标准。当出现重要歧义需要追问时,请明确告知模型。 -- **原始图像细节:** GPT-5.6 会保留随 `original` 或 `auto` 发送的图像的原始尺寸细节,而不是将它们压缩到某个 patch 预算或像素尺寸上限。较大的图像会消耗更多输入 token 并增加延迟。了解如何 [选择图像细节等级](https://developers.openai.com/api/docs/guides/images-vision#choose-an-image-detail-level). +- **程序化工具调用:** GPT-5.6 可以编写 JavaScript 来调用符合条件的工具、在调用之间传递结果,并在托管运行时中处理中间输出。使用 [程序化工具调用](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling) 适用于有界、工具密集型的工作流,且每步之间无需新的模型判断。程序化工具调用兼容 ZDR,不会产生额外的容器费用。 +- **多智能体 [beta]:** [多智能体](https://developers.openai.com/api/docs/guides/responses-multi-agent) 使 GPT-5.6 实例能够并行协调多个子智能体并综合它们的结果。与 Codex 中的 ultra 模式类似,它可以缩短实际运行时间,并提升可清晰拆分为独立工作流的复杂任务的性能。多智能体 作为 beta 功能在 Responses API 中提供,以便我们根据开发者反馈持续改进。 +- **显式提示缓存:** GPT-5.6 允许你精确标记 OpenAI 缓存的可复用提示前缀。你仍可在隐式模式下使用自动缓存。OpenAI 按未缓存输入价格的 1.25× 计费缓存写入,缓存读取仍享有折扣。了解如何 [配置提示缓存](https://developers.openai.com/api/docs/guides/prompt-caching). +- **持久化推理:** GPT-5.6 可在多个轮次之间复用可用的推理项,以提升多轮质量和缓存效率。使用 `reasoning.context` 来选择行为。了解如何 [跨调用保留推理](https://developers.openai.com/api/docs/guides/reasoning#preserve-reasoning-across-calls). +- **最大推理力度:** GPT-5.6 支持 `max` 推理力度,以应对需要更多探索和验证的高难度任务。如果你目前使用 `xhigh`,请在代表性工作负载上对比两种设置。 +- **Pro 模式:** GPT-5.6 可执行更多模型工作以提升困难任务的可靠性,并返回单个最终答案。可通过 `reasoning.mode: "pro"` 在质量比延迟和 token 用量更重要时使用。了解如何 [使用 pro 模式](https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode). +- **Token 效率:** GPT-5.6 以更少的输出 token 达到旗舰级性能。 +- **前端设计:** GPT-5.6 能创建更精致、更可用的网站和应用,在布局、视觉层次和设计判断上表现更强。 +- **意图理解:** GPT-5.6 能更好地从上下文推断用户的潜在目标和预期的工作深度,因此你通常无需规定每一步。请继续提供领域上下文、硬性约束、审批边界和成功标准;当遇到重要的歧义应触发追问时,请告知模型。 +- **原始图像细节:** GPT-5.6 会保留通过 `original` 或 `auto` 发送的图像的原始细节尺寸,而非将其缩放到 patch 预算或像素尺寸限制。大图像会占用更多输入 token 并增加延迟。了解如何 [选择图像细节级别](https://developers.openai.com/api/docs/guides/images-vision#choose-an-image-detail-level). -## 安全防护 +## Safeguards -使用 GPT-5.6 模型时,用户可能会遇到一些安全防护措施,它们会拦截或拒绝部分请求,因为会在模型输出生成时运行实时网络与生物风险滥用分类器。还有一些请求可能耗时更长,因为生成过程会在中途暂停数秒,以便这些分类器同步审查输出。安全防护措施偶尔也会干预合法的工作,尤其是在防御性与攻击性活动初期表现相似的双重用途领域。 +在使用 GPT-5.6 模型时,用户可能会遇到一些安全防护措施,由于实时网络和生物滥用分类器会在模型输出生成时运行,这些防护措施会阻止或拒绝某些请求。其他请求可能会耗时更长,因为在这些分类器同步审查输出时,生成过程会暂停数秒。安全防护措施偶尔可能会干预合法工作,尤其是在防御性和攻击性活动初期可能相似的两用领域。 -如果你的应用面向最终个人用户,请在每个请求中附带一个稳定且保护隐私的 `safety_identifier` 。详见 [实施安全标识符](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers) 获取指引。 +如果你的应用为各个最终用户提供服务,请在每次请求中附带一个稳定的、保护隐私的 `safety_identifier` 。参见 [实施安全标识符](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers) 以获取指导。 -我们持续迭代这些安全防护措施,使其在面对对抗性压力时依然稳健有效,同时保留对合法工作的访问,例如代码审查、漏洞研究、补丁开发、调试、安全教育以及防御性测试。 +我们正在持续演进这些安全防护措施,使其在抵御对抗性压力的同时保持稳健有效,并保留对合法工作的访问,例如代码审查、漏洞研究、补丁开发、调试、安全教育和防御性测试。 -## 迁移快速入门 +## 迁移快速开始 ### 使用 Codex 进行迁移 -Codex 可以按照本指南中的建议进行更改,方法是使用 [OpenAI Docs 技能](https://github.com/openai/skills/tree/main/skills/.curated/openai-docs). +Codex 可以通过以下方式应用本指南中建议的更改 [OpenAI Docs 技能](https://github.com/openai/skills/tree/main/skills/.curated/openai-docs). ```text $openai-docs migrate this project to the GPT-5.6 model family ``` -如需在其他编码智能体中使用此技能,请从 [OpenAI skills 仓库](https://github.com/openai/skills/tree/main/skills/.curated/openai-docs). +要在其他编码智能体中使用此技能,请从 [OpenAI 技能仓库](https://github.com/openai/skills/tree/main/skills/.curated/openai-docs). ### 更新 API 和模型参数 -- 为工作负载选择目标模型。可使用 `gpt-5.6-sol` 以获得前沿能力, `gpt-5.6-terra` 以兼顾智能与成本,或 `gpt-5.6-luna` 用于高效的高吞吐量工作负载。 `gpt-5.6` 别名会将请求路由到 `gpt-5.6-sol`. -- 使用 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses) 以进行推理、工具调用和多轮工作流。 -- 设置 `reasoning.effort` 时请有意识地选择。GPT-5.6 支持 `none`, `low`, `medium`, `high`, `xhigh`,以及 `max`. - - 如果你正在从 GPT-5.5 或 GPT-5.4 迁移,请保留当前的推理力度作为基线,然后与低一级进行比较。 - - 如果你使用 `none`,请将其作为延迟基线保留,并同时测试 `low` ,当工作流受益于推理或工具使用时。 - - 使用 `medium` 作为均衡的起点,并 `low` 用于对延迟敏感的工作负载。 - - 使用 `high` 或 `xhigh` ,当更多推理带来可衡量的质量提升时。 - - 保留 `max` 用于对质量要求最高的工作负载。比较 `max` 和 `xhigh` 以找到最适合你用例的质量、延迟和成本权衡。 -- 要使用 pro 模式,请保留你选择的 GPT-5.6 模型,并将 `reasoning.mode` 设置为 `pro` ,应用于 Responses API;不要切换到单独的 Pro 模型 slug。选择 `reasoning.effort` 是独立的。如果省略它,GPT-5.6 在标准模式和 pro 模式下都将默认为 `medium` 。参见 [reasoning mode](https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode) 获取请求示例和计费详情。 -- 根据先前推理仍然相关的程度,配置持久化推理。GPT-5.6 模型默认为 `all_turns`;早期模型默认为 `current_turn`. - - 省略 `reasoning.context` 或将其设置为 `auto` 以使用 `all_turns`,即 GPT-5.6 的默认值。检查响应中的 `reasoning.context` 字段以确认实际生效的模式。 - - 设置 `reasoning.context` 设置为 `all_turns` 在任务的目标、假设和优先级在各轮中保持稳定时使用。 - - 使用 `all_turns`,时,使用 `previous_response_id` 以使模型能够使用先前响应的推理内容。 - - 在手动管理历史记录时,保留并重新发送之前的用户输入和每个响应输出项。对于 `store: false` 或零数据保留,重放 API 默认返回的加密推理项。 - - 设置 `reasoning.context` 设置为 `current_turn` 当先前的推理不再相关时。 -- 查看提示缓存。你无需更改代码即可继续使用隐式缓存。由于 GPT-5.6 缓存写入的成本是未缓存输入的 1.25 倍,请跟踪 `cached_tokens` 和 `cache_write_tokens` 以了解净成本。使用显式断点或 `prompt_cache_options.mode: "explicit"` 以避免不必要的写入,并将 `prompt_cache_retention` 替换为 `prompt_cache_options.ttl`. -- 要使用程序化工具调用,请添加 `programmatic_tool_calling` 工具并通过 `allowed_callers`。启用符合条件的工具。更新你的应用以处理 `program` 项、程序发出的函数调用,以及 `program_output` 项,同时保留每次调用的 `call_id` 和 `caller` 关联。参阅 [程序化工具调用指南](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling) 中的请求和 延续 示例。 - - 在具有代表性的任务上对启用 PTC 的 工作流 进行基准测试。比较任务成功率、最终答案的完整性、所需证据、总令牌数、延迟和成本。只有在最终答案仍能达到所需质量标准时,更少的调用次数、轮次或中间输出才算改进。 - -## 提示词最佳实践 - -### 优先使用精简的提示词 - -去除重复的指令和示例,并精简工具描述,可以提升任务表现与 token 使用效率。在一组内部编程智能体评测运行中,使用更精简系统提示的配置,将评测分数提升了约 10–15%,同时将总 token 减少 41–66%,成本降低 33–67%。实际结果会因工作负载而异,因此请将这些范围视为方向性参考,并针对你自己应用中的代表性任务对改动进行验证。 - -若要在不丢失重要指引的前提下精简提示: - -- 从一组已经可用的提示词和工具集开始。每次移除一组指令、示例或工具,然后重新运行相同的评估。 -- 每条指令只写一次。 -- 仅暴露与任务相关的工具,并保持其描述简洁而准确。 -- 当示例和风格指导承载了产品需求或修正了已测得的差距时,予以保留。 -- 在运行开始时以及对话推进过程中都追踪上下文。较长的会话可能会放大重复的提示词和工具内容。 +- 为工作负载选择目标模型。使用 `gpt-5.6-sol` 以获得旗舰性能, `gpt-5.6-terra` 以兼顾智能与成本,或 `gpt-5.6-luna` 用于高效、大规模的工作负载。 `gpt-5.6` 别名会将请求路由到 `gpt-5.6-sol`. +- 使用 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses) 进行推理、工具调用和多轮工作流。 +- 设置 `reasoning.effort` 时请慎重。GPT-5.6 支持 `none`, `low`, `medium`, `high`, `xhigh`,以及 `max`. + - 如果你正在从 GPT-5.5 或 GPT-5.4 迁移,请将当前的推理强度作为基线,然后对比低一档。 + - 如果你使用 `none`,请将其作为延迟基线,同时测试 `low` ,当 工作流 能从推理或工具使用中受益时。 + - 使用 `medium` 作为均衡的起点,以及 `low` 用于对延迟敏感的工作负载。 + - 使用 `high` 或 `xhigh` 以在更多推理带来可衡量的质量提升时使用。 + - 预留 `max` 用于最严苛的、要求质量优先的工作负载。可与 `max` 和 `xhigh` 进行比较,以找到适合你用例的最佳质量、延迟和成本权衡。 +- 若要使用 pro 模式,请保留你选定的 GPT-5.6 模型,并将 `reasoning.mode` 设为 `pro` ,在 Responses API 中使用;不要切换到单独的 Pro 模型标识符。可独立选择 `reasoning.effort` 。如果省略它,GPT-5.6 在标准模式和 pro 模式下都会默认使用 `medium` 。请参阅 [reasoning mode](https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode) 获取请求示例和计费详情。 +- 根据先前推理的相关程度,配置持久化推理。GPT-5.6 模型默认使用 `all_turns`;更早的模型默认使用 `current_turn`. + - 省略该参数 `reasoning.context` 或将其设为 `auto` 以使用 `all_turns`,即 GPT-5.6 的默认值。请检查响应中的 `reasoning.context` 字段以确认实际生效的模式。 + - 设置 `reasoning.context` 设为 `all_turns` 当任务的目标、假设和优先级在多轮交互中保持稳定时, + - 使用 `all_turns`,并使用 `previous_response_id` 以便让模型可以访问来自先前响应的推理。 + - 在手动管理历史记录时,请保留并重新发送先前的用户输入以及每一个响应输出项。对于 `store: false` 或零数据留存(Zero Data Retention)场景,请重放 API 默认返回的加密推理项。 + - 设置 `reasoning.context` 设为 `current_turn` 当先前的推理不再相关时。 +- 审查提示缓存。你无需更改代码即可继续使用隐式缓存。由于 GPT-5.6 的缓存写入费用是未缓存输入价格的 1.25 倍,请跟踪 `cached_tokens` 和 `cache_write_tokens` 以了解净成本。使用显式断点或 `prompt_cache_options.mode: "explicit"` 以避免不必要的写入,并将 `prompt_cache_retention` 替换为 `prompt_cache_options.ttl`. +- 要使用程序化工具调用(Programmatic Tool Calling),请添加 `programmatic_tool_calling` 工具,并使用 `allowed_callers`。将符合条件的工具加入。更新你的应用以处理 `program` 项、由程序发起的函数调用,以及 `program_output` 项,同时保留每次调用的 `call_id` 和 `caller` 关联。请参阅 [程序化工具调用指南](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling) 中关于请求和 延续 的示例。 + - 在具有代表性的任务上对启用 PTC 的 工作流 进行基准测试。对比任务成功率、最终答案的完整性、所需的证据、总 token 数、延迟和成本。只有在最终答案仍满足所需质量标准的前提下,调用次数、轮次或中间输出更少才算改进。 + +## 提示工程最佳实践 + +### 优先使用更简洁的提示 + +去除重复的指令和示例,并简化工具描述,可以提升任务表现和 token 使用效率。在一组内部编码智能体评测运行样本中,精简系统提示词配置使评测分数提升约 10–15%,同时总 token 减少 41–66%,成本降低 33–67%。不同工作负载的结果会有所差异,因此请将这些范围视作参考方向,并基于你自己应用中的代表性任务验证改动效果。 + +在不丢失关键信息的前提下精简提示词,可参考以下做法: + +- 从一个已经能正常工作的提示词和工具集开始。每次移除一组指令、示例或工具,然后重新运行相同的评测。 +- 每条指令只陈述一次。 +- 只暴露与任务相关的工具,并保持其描述简洁而精准。 +- 当示例和风格指引承载了产品需求或能修正已观测到的差距时,保留它们。 +- 在运行开始时以及会话过程中跟踪上下文。较长的会话会放大重复的提示词和工具内容。 ### 定义自主性与审批边界 -GPT-5.6 在执行多步任务时可以主动且持续地推进。为每个请求明确授权的行动范围,让模型能够在安全、符合范围的作业中持续推进,而无需不必要地暂停,并在涉及外部、破坏性、高成本或超出范围的操作之前及时停止。 +GPT-5.6 在执行多步骤任务时可以主动且持续地推进。为每个请求明确授权的行动范围,使模型能够在安全、符合既定范围的前提下不间断地继续工作,同时在涉及外部操作、具有破坏性、成本较高或超出既定范围的操作前及时停下。 -一段简洁的策略通常就足够: +通常,一份简洁的策略就足够了: ```text For requests to answer, explain, review, diagnose, or plan, inspect the relevant @@ -107,21 +107,21 @@ Require confirmation for external writes, destructive actions, purchases, or a material expansion of scope. ``` -明确列出安全的本地操作,例如读取文件、检查日志、修改范围内的代码以及运行测试。将策略集中在一处,每条规则只写一次。诸如“先询问”“不要变更”“等待批准”等重复性指令,可能导致模型对安全且符合预期的操作提出不必要的审批请求。 +明确列出安全的本地操作,例如读取文件、检查日志、修改既定范围内的代码以及运行测试。将策略集中在一个地方,每条规则只陈述一次。像“先询问”“不要改动”或“等待批准”这类重复性的指令,会导致对安全、预期的操作发出不必要的审批请求。 -### 设置回复长度与风格 +### 设置响应长度和风格 -GPT-5.6 默认情况下往往比 GPT-5.5 更简洁。在迁移时,请检查诸如“Be concise”或“Keep it short”这类广泛的简洁性指令是否仍然有用。对于某些任务而言,它们可能是不必要的,有时还会让回复过于简短。当这些指令能够稳定生成你应用所需的输出时,请保留它们。 +GPT-5.6 默认情况下往往比 GPT-5.5 更简洁。在迁移时,请检查诸如“保持简洁”或“简短一些”之类的笼统简短性指令是否仍然有用。对于某些任务来说,它们可能并不必要,有时甚至会让回答过于简短。当这些指令能够可靠地生成应用所需的输出时,请保留它们。 -若要在不同请求中获得更一致的控制,请使用 `text.verbosity` 来设置默认的详细程度,然后使用提示来满足任务特定的要求。 +如需在多个请求间获得更一致的控制,可使用 `text.verbosity` 来设置默认的详细程度,然后使用提示词来满足任务的具体需求。 #### 设置默认值 `text.verbosity` -选择 `low`, `medium`,或 `high` 作为请求的默认详细程度。在提示中指定任何任务特定的长度、结构或必需的内容。请参阅 [设置 `text.verbosity`](https://developers.openai.com/api/docs/guides/deployment-checklist#set-up-textverbosity) 以获取API示例。 +选择 `low`, `medium`,或 `high` 作为请求的默认详细程度。在提示中指定特定任务所需的长度、结构或必填内容。请参阅 [设置 `text.verbosity`](https://developers.openai.com/api/docs/guides/deployment-checklist#set-up-textverbosity) 中的API示例。 -#### 指定简短回答必须包含的内容 +#### Specify what a short answer must include -当任务要求给出更简短的答复时,需识别模型必须保留的信息以及可以省略的细节。例如: +当任务要求更简短的答案时,要识别模型必须保留的信息以及可以省略的细节。例如: ```text Lead with the conclusion. Include the evidence needed to support it, any material @@ -131,11 +131,11 @@ Keep all required facts, decisions, caveats, and next steps. Trim introductions, repetition, generic reassurance, and optional background first. ``` -这为模型设定了一个明确的优先级顺序:先保留完成任务所需的内容,再删去价值较低的细节。 +这为模型提供了清晰的优先级顺序:先保留完成任务所需的内容,再删除价值较低的细节。 #### 定义语气 -像“友好”或“共情”这样宽泛的标签可能会产生歧义。请描述定义你产品语气风格的写作选择,例如陈述答案的直接程度、何时承认问题,以及是否适合进行安抚或结束语。 +像“友好的”或“有同理心的”这类宽泛的标签可能含义模糊。请描述能够定义你产品语气风格的写作选择,例如如何直接给出答案、何时应承认问题,以及安抚用户或礼貌收尾是否合适。 ```text State the answer directly. If the user reports a problem, acknowledge the @@ -143,19 +143,19 @@ specific issue before giving the next step. Use reassurance only when it is relevant. Omit generic praise and unnecessary sign-offs. ``` -### Pro 模式 +### Pro mode -#### 在质量最为重要时选择 pro 模式 +#### 在质量优先时选择 pro mode -Pro 模式是一种 Responses API 执行模式,它会在返回单个最终答案之前对请求投入更多的模型工作。它可以提高困难任务的可靠性,但会增加延迟,并在上报的使用量中汇总这些工作所产生的 token。这些 token 按所选模型的标准 token 费率计费。 +Pro 模式是一种 Responses API 执行模式,它会在返回单个最终答案之前为请求投入更多的模型算力。它可以提升困难任务的可靠性,但会增加延迟,并在上报的使用量中累计这部分算力所产生的 token。这些 token 按所选模型的标准 token 费率计费。 -当边际质量提升会对结果产生实质性影响,且任务足够困难、能够从中受益时(例如复杂的优化、高价值的编码或评审,或具有明确评估标准的深度分析),请使用 pro 模式。对于例行的、对延迟敏感或高吞吐量工作,以及当你的评估未显示 pro 模式带来显著收益时,请优先使用标准模式。 +当边际质量提升会显著影响结果、并且任务足够困难以从中受益时(例如复杂的优化、高价值的编码或代码评审,以及具有明确评估标准的深度分析),可以使用 pro 模式。对于例行的、对延迟敏感或高吞吐的工作,以及当你的评估未显示 pro 模式带来显著收益时,应优先使用标准模式。 -推理模式和推理努力程度是相互独立的。Pro 模式适用于任何 GPT-5.6 模型及其支持的推理努力程度。请从与你的标准模式基线相同的模型和努力程度开始,然后在具有代表性的任务上比较配置,而不是假设最高的努力程度始终是最佳权衡。 +推理模式与推理努力程度相互独立。Pro 模式可与任何 GPT-5.6 模型及其支持的推理努力程度配合工作。建议从与你的标准模式基线相同的模型和推理努力程度开始,然后在具有代表性的任务上比较不同配置,而不要假设最高努力程度始终是最佳权衡。 -#### 在 API 中配置 pro 模式 +#### 在 API 中配置专业模式 -在 API 请求中启用 pro 模式。沿用你在标准模式下使用的同一个面向结果的提示词:说明目标、相关上下文、约束条件、所需证据、成功标准以及输出格式。你无需要求模型“使用 pro 模式”、“更深入思考”或生成多个候选答案。 +在 API 请求中启用 pro 模式。沿用你在标准模式下使用的那种以结果为导向的提示词:阐明目标、相关上下文、约束条件、所需证据、成功标准以及输出格式。你无需在提示中要求模型“使用 pro 模式”、“更深入思考”或生成多个候选答案。 例如: @@ -166,39 +166,39 @@ and likelihood, and recommend a specific mitigation. Return the five most important risks in severity order. ``` -#### 对比质量与成本 +#### 比较质量与成本 -在相同的代表性任务上对比 standard 与 pro 模式。衡量任务成功率、回答完整性、所需证据、总 token 数、延迟和成本。在 pro 模式带来的质量或可靠性提升值得额外模型开销的场景中选择性地使用 pro 模式。 +在相同的代表性任务上比较 standard 和 pro 模式。衡量任务成功率、答案完整性、所需证据、总令牌数、延迟和成本。在 pro 模式能带来足够质量或可靠性提升以抵消额外模型开销的场景中有选择地使用它。 -请参阅 [推理模式指南](https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode). +在 [推理模式指南](https://developers.openai.com/api/docs/guides/reasoning#reasoning-mode). -### Programmatic Tool Calling +### 程序化工具调用 -#### 按任务形态选择 Programmatic Tool Calling +#### 根据任务形态选择程序化工具调用 -程序化工具调用(Programmatic Tool Calling,PTC)最适合用于有界的工作流,其中代码可以处理多个工具结果或较大的中间输出,并返回一个更小的结构化结果。可将其用于过滤、连接、排序、去重、聚合、校验或其他可预测的处理。 +程序化工具调用(PTC)最适合用于有界的工作流,即代码可以处理多个工具结果或较大的中间输出,并返回一个更小的结构化结果。可将其用于过滤、连接、排序、去重、聚合、校验或其他可预测的处理任务。 -仅仅因为存在多个、并行或存在依赖关系的调用,并不足以使用程序化工具调用。在以下情况下,优先选择直接的、非 PTC 的工具调用: +仅仅因为多个调用、并行调用或存在依赖调用,并不足以作为使用程序化工具调用的理由。在以下情况下,应优先使用直接的、非 PTC 的工具调用: -- 单次调用即可完成 -- 中间输出已经足够小 +- 一次调用即可 +- 中间输出本身已经很小 - 每个结果都可能改变模型的下一个决策 -- 某个动作需要获得批准 -- 最终输出必须保留引用或原生制品 +- 某个动作需要审批 +- 最终输出必须保留引用或原生产物 -#### Make routing instructions task-specific +#### 针对具体任务制定路由指令 -不要依赖工具可用性或诸如“高效地使用程序化工具调用”这类通用指令来生成正确的路由。当直接调用和程序化调用都可用时,请明确说明: +不要依赖工具可用性或“高效使用程序化工具调用”等通用指令来生成正确的路由。当直接调用和程序化调用都可用时,请明确说明: -- 哪个有界阶段应该使用程序化工具调用。 +- 哪个有界阶段应使用程序化工具调用。 - 它可以调用哪些工具。 -- 确切的输出模式以及所需的证据。 -- 并发、重试和停止限制。 -- 哪些工作应该保持直接执行。 +- 确切的输出架构和所需的证据。 +- 并发、重试以及停止限制。 +- 哪些工作应保持直接执行。 -工具说明应记录预期的返回字段、类型和错误行为。如果模型在编写程序之前无法确定返回结构,应优先直接调用工具,以便在决定如何使用结果之前先检查结果。 +工具描述应记录其预期返回字段、类型和错误行为。如果模型在编写程序前无法确定返回结构,建议直接调用工具,以便在决定如何使用之前先检查结果。 -如果需要使用两条路径,请定义一个清晰的交接,并告知模型不要切换路径或重复已完成的工作。 +如果两条路由都需要,请定义一次清晰的交接,并告知模型不要切换路由或重复已完成的工作。 例如: @@ -221,8 +221,8 @@ Use direct tool calls for [semantic judgment, approval, or final validation]. #### 评估最终答案 -该 `program_output` item 和最终助手 `message` 输出是分开的;务必对两者都进行测试。理论上,程序可以返回正确的记录,而消息遗漏了必填字段、引用或注意事项。 +该 `program_output` item 和最终的助手 `message` 是相互独立的输出,请务必同时测试两者。理论上,程序可能返回了正确的记录,但消息遗漏了必填字段、引用或注意事项。 -在相同的代表性任务上比较直接调用和程序化调用。检查最终响应是否正确、完整,并包含所需的证据。然后比较总 token 数、延迟、成本、调用次数、轮次和重试次数。只有在响应仍能通过你现有的评估时,才能将更低的资源使用视为改进。 +在同一组具有代表性的任务上比较直接调用和程序化调用。检查最终响应是否正确、完整,并包含所需的证据。然后对比总 token 数、延迟、成本、调用次数、轮次和重试次数。只有当响应仍然通过现有评估时,才把更低资源消耗视为改进。 -请参阅 [程序化工具调用指南](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling). \ No newline at end of file +在 [程序化工具调用指南](https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/mutual-tls.md b/docs/zh/api/docs/guides/mutual-tls.md new file mode 100644 index 0000000..78a201d --- /dev/null +++ b/docs/zh/api/docs/guides/mutual-tls.md @@ -0,0 +1,246 @@ +# Mutual TLS + +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,可在页面 URL 末尾追加 `.md` 。 + +Mutual TLS(mTLS)为 OpenAI API 请求添加 TLS 客户端证书验证。 +在为组织或项目激活受信任证书后,该范围内的请求除了常规的 +bearer 凭证外,还必须出示一份被接受的客户端证书。 +bearer 凭证。 + +当工作负载可以安全保存客户端私钥,并且你希望在授权 API 请求前让 OpenAI 验证其证书身份时,请使用 mTLS。 +请求。 +mTLS 不能替代 API 密钥、服务账号凭证或工作负载 +身份访问令牌。 + +X.509 工作负载身份联合使用同一组有效 mTLS 信任锚点。 + 证书交换会返回一个短时效的 bearer 令牌,后续的 API + 调用仍然会同时发送该 bearer 令牌和一份被接受的 API mTLS 证书。参阅 + [使用 X.509 配置工作负载身份联合 + 证书](https://developers.openai.com/api/docs/guides/workload-identity-federation/x509). + +## 配置 mTLS 之前 + +任何 API 组织都可以通过常规的基于角色的访问控制 +(RBAC)管理 mTLS: + +- `api.mtls.read` 允许主体列出、查看和测试证书设置。 +- `api.mtls.write` 允许主体上传、更新、激活、停用以及 + 删除证书。 + +组织所有者角色包含这些权限,但你可以通过自定义角色授予它们 +。有关详细信息,请参阅 [在以下位置管理权限 +OpenAI 平台](https://developers.openai.com/api/docs/guides/rbac). + +准备工作: + +- 每个工作负载的客户端证书及其私钥。 +- 构建从客户端证书到你的信任锚点的证书链所需的任何中间证书 + 。 +- 一个稳定的 PEM 编码信任锚点,你可以在组织 + 或项目级别激活它。 +- 在生产环境中启用 mTLS 之前,需要一个非关键型项目以及经过测试的恢复路径 + 。 + +将私钥排除在源代码管理之外。不要记录私钥、证书 +内容或持有者凭据。 + +## 上传并启用信任 + +Upload stores a certificate but does not enforce mTLS. Activation is the step +that changes request behavior. + +1. 打开 [Organization settings > Security > Mutual + TLS](https://platform.openai.com/settings/organization/security/mtls). +2. 为每个证书对象上传一个 PEM 编码的可信锚。给它指定一个 + 能够标识该机构及轮换世代的名称。 +3. (可选)添加一个 [CEL 过滤器](#filter-client-certificates-with-cel) , + 用于限制该可信锚可接受的客户端证书范围。 +4. 先在非关键项目中启用该证书。通过一个 + 从每个预期的工作负载发出 [mTLS API 主机](#use-an-mtls-host) 发出 + 具有代表性的请求。 +5. 在验证成功之后,再为其他项目或组织启用该证书。 + 。 + +你也可以通过 API 管理证书: + +| Task | Endpoint | +| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 上传证书 | `POST /v1/organization/certificates` | +| 列出组织证书 | `GET /v1/organization/certificates` | +| 检索、更新或删除证书 | `GET`, `POST`,或 `DELETE /v1/organization/certificates/{certificate_id}` | +| 激活或停用组织的证书 | `POST /v1/organization/certificates/activate` 或 `POST /v1/organization/certificates/deactivate` | +| 列出、激活或停用项目的证书 | `GET /v1/organization/projects/{project_id}/certificates`, `POST /v1/organization/projects/{project_id}/certificates/activate`,或 `POST /v1/organization/projects/{project_id}/certificates/deactivate` | + +使用具有所需 `api.mtls.read` 或 `api.mtls.write` +权限的凭据。有关请求和响应架构,请参阅 [organization +certificates API 参考](https://developers.openai.com/api/reference/resources/admin/subresources/organization). + +## 证书要求 + +每个证书对象使用一个 PEM 编码的可信锚。上传必须 +包含一张有效期至少比上传时间晚一天的有效证书。 +客户端证书必须包含 Authority Key Identifier (AKI) 以用于请求 +验证。 + +要使请求通过 mTLS: + +- 客户端证书在请求时必须有效,并且适用于 TLS + 客户端身份验证。 +- 客户端证书必须能够构建到有效的组织级或 + 项目级信任锚的合法路径。 +- 如果该路径包含中间证书,客户端必须在 + TLS 握手期间提供这些证书。 +- 配置的信任锚和客户端链必须通过标准的 X.509 + 客户端证书路径验证。 + +如果一次上传包含多个 PEM 编码的证书,请求链 +验证仅使用第一个配置的证书作为锚点;请勿 +依赖 PEM 捆绑包语义。 + +OpenAI 不会从 Authority Information Access +(AIA) URL 获取缺失的中间证书,也不会执行证书吊销列表 (CRL) 或 Online +Certificate Status Protocol (OCSP) 检查。请提供完整的必需链, +并通过证书轮换、停用以及 +你自己的证书生命周期控制来管理事件响应。 + +## 了解验证顺序 + +OpenAI 会在活动组织级证书之前检查活动项目级证书。 +如果这两个作用域都没有处于活动状态的证书, +mMTLS 不会为该请求添加证书检查。 + +当存在有效证书时,OpenAI 按以下顺序验证客户端身份: +order: + +1. OpenAI 首先尝试现有的直连路径,直接将客户端 + 证书与活动锚点进行校验,无需请求 + 中间证书。 +2. 在普通的直连路径未匹配后,OpenAI 会尝试请求链 + 验证,使用客户端证书以及 TLS 连接中 + 提供的中间证书。 +3. 如果某条路径验证通过,OpenAI 会评估该活动证书的 CEL 过滤器(如果 + 存在),并对照已验证的客户端证书进行匹配。 + +Request-chain 验证默认可用。 + +请求链路径是普通无匹配之后的回退路径,而非针对每条直连路径错误的恢复路径 +路径。证书材料缺失或格式错误、AKI 缺失,或在直连路径选定 +anchor 后出现确定性错误,都可能在未尝试所呈现链的情况下使请求失败。 +anchor 之后出错都可能在未尝试所呈链的情况下导致请求失败。 + +## 使用 CEL 过滤客户端证书 + +为已上传的证书附加一个可选的通用表达式语言(CEL)过滤器,以约束该锚点接受的已验证客户端证书。 +certificate to constrain the verified client certificates that anchor accepts. +该表达式必须求值为布尔值,并针对直接路径和请求链路径上的已验证客户端证书运行。 +certificate on both the direct and request-chain paths. + +CEL 公开以下字段: + +- `subject.common_name`, `subject.country_code`, `subject.organization`, + `subject.organizational_unit`, `subject.locality`, `subject.province`, + `subject.street_address`,以及 `subject.postal_code`. +- `subject_alt_names`,一个其条目公开以下内容的列表 `type`, `value`,以及 `oid`. + 支持的 SAN 类型标识符包括 `DNS`, `EMAIL`, `IP_ADDRESS`, `URI`,以及 + `CUSTOM`. + +例如,要求生产组织单元和 DNS SAN +特定命名空间: + +```text +subject.organizational_unit == "Production" && +subject_alt_names.exists(san, san.type == DNS && san.value.endsWith(".example.com")) +``` + +验证通过但不匹配过滤条件的证书会因以下错误而失败: +`certificate_attribute_verification_failed`。OpenAI 会在你保存未通过验证的策略时拒绝该策略。 + +## 使用 mTLS 主机 + +将 API 流量发送到 mTLS 主机,而不是 `api.openai.com`: + +| Host | Use | +| ------------------------ | ------------------------------------- | +| `mtls.api.openai.com` | 默认 API mTLS 主机。 | +| `mtls-us.api.openai.com` | 美国区域 API mTLS 主机。 | +| `mtls-eu.api.openai.com` | 欧盟区域 API mTLS 主机。 | + +mTLS 是基于主机的。使用与对应 `/v1` API 接口相同的路由,并测试你的工作负载所使用的每个 +API 和模型。各区域主机之间的路由和模型可用性可能不同。 +各区域主机之间的路由和模型可用性可能不同。 + +例如,向默认 mTLS 主机同时发送普通的 bearer 凭证和客户端证书: +默认 mTLS 主机: + +```bash +export OPENAI_MTLS_CERT_CHAIN="/path/to/client-chain.pem" +export OPENAI_MTLS_KEY="/path/to/client-key.pem" + +curl https://mtls.api.openai.com/v1/models \ + --cert "$OPENAI_MTLS_CERT_CHAIN" \ + --key "$OPENAI_MTLS_KEY" \ + --header "Authorization: Bearer $OPENAI_API_KEY" +``` + +证书链文件应先包含客户端证书, +后跟任何所需的中间证书。不要在请求头中 +HTTP 标头或请求体。 + +X.509 工作负载身份联合使用一个独立的精确交换端点: +`POST https://mtls.auth.openai.com/oauth/token`。该交换会生成一个 +短期持有者令牌;它不提供仅限证书的 API 身份验证。有关 +完整的请求格式,请参阅 [工作负载身份令牌交换 +参考](https://developers.openai.com/api/reference/workload-identity-federation#exchange-an-x509-certificate). + +## Rotate certificates + +通过带重叠的方式轮换信任锚点,使现有工作负载继续工作: + +1. 上传新的信任锚,不要停用旧的信任锚。 +2. 在每个目标项目或组织中激活新的信任锚 + 级别。 +3. 更新工作负载,使其提供链接到新信任锚的客户端 + 锚点证书,然后测试它们使用的每个 mTLS 主机和 API 接入面。 +4. 在所有工作负载迁移完成后再停用旧的信任锚。 +5. 仅在为组织停用旧证书后才能删除它, + 并对每个项目都执行此操作。 + +你可以在不更改已配置信任锚的情况下轮换中间证书。 +在后续请求中提供新的完整证书链。 + +## 排查请求问题 + +使用稳定的错误代码来区分配置错误与临时 +服务错误: + +| 错误代码 | 检查项 | +| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| `certificate_required` | 活动证书有效,但请求未提供所需的客户端证书材料。 | +| `invalid_certificate` | OpenAI 无法解码或解析客户端证书,或证书缺少验证所需的 AKI。 | +| `certificate_verification_failed` | 客户端证书或所提供的证书链未到达有效的信任锚点。 | +| `certificate_attribute_verification_failed` | 证书路径验证通过,但 CEL 过滤器拒绝了已验证的客户端证书。 | +| `authentication_temporarily_unavailable` | 验证器超时、内部依赖错误或 CEL 求值器错误导致了 HTTP `503`。请按照常规的瞬态错误重试策略重试。 | + +对于管理请求, `mtls_certificate_invalid` 表示上传的 PEM +未通过校验, `expired_certificate` 表示它过期过早或已 +过期, `mtls_cel_policy_invalid` 表示该过滤器未通过校验,且 +`certificate_in_use` 表示你必须在删除之前停用该证书 +。 + +## 当前的局限性 + +- 一个组织最多可上传 50 个证书对象。 +- mTLS 在常规 API 身份验证的基础上增加了证书验证;它不提供 + 仅限证书的 API 授权。 +- OpenAI 不会获取 AIA 中间证书,也不会执行 CRL 或 OCSP + 检查。 +- Private Link 与 mTLS 不兼容。请参阅 [Private + Link](https://developers.openai.com/api/docs/guides/private-link) 了解何时需要使用 Azure 专用网络 + 路径。 +- 支持的 API mTLS 主机为 `mtls.api.openai.com`, + `mtls-us.api.openai.com`,以及 `mtls-eu.api.openai.com`。请勿假设每个 + 其他区域 API 主机都有对应的 mTLS 主机。 +- X.509 工作负载身份联合不会返回刷新令牌,并且不会 + 不使用 DPoP、 `cnf` 声明或证书绑定的持有者令牌。请参阅 + [使用 X.509 证书配置工作负载身份联合 + 证书](https://developers.openai.com/api/docs/guides/workload-identity-federation/x509). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/predicted-outputs.md b/docs/zh/api/docs/guides/predicted-outputs.md index d1e3373..ba774ee 100644 --- a/docs/zh/api/docs/guides/predicted-outputs.md +++ b/docs/zh/api/docs/guides/predicted-outputs.md @@ -1,14 +1,14 @@ # Predicted Outputs -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾添加 `.md` 即可获取该页面的 Markdown 版本。 -**Predicted Outputs** 使你能够加快来自 API 响应的速度 [Chat Completions](https://developers.openai.com/api/reference/resources/chat) 的响应速度,前提是你提前知道许多输出令牌。这在以微小修改重新生成文本或代码文件时最为常见。你可以使用 Chat Completions 中的 [`prediction` request 参数](https://developers.openai.com/api/reference/resources/chat#chat-create-prediction). +**Predicted Outputs** 使你能够在许多输出 token 已知的情况下,加快 API 来自 [Chat Completions](https://developers.openai.com/api/reference/resources/chat) 的响应速度。这在你重新生成仅有少量修改的文本或代码文件时最为常见。你可以使用以下参数提供预测内容: [`prediction` Chat Completions 中的 request 参数](https://developers.openai.com/api/reference/resources/chat#chat-create-prediction). -目前可使用最新的 `gpt-4o`, `gpt-4o-mini`, `gpt-4.1`, `gpt-4.1-mini`,以及 `gpt-4.1-nano` 模型来使用 Predicted Outputs。继续阅读以了解如何使用 Predicted Outputs 来降低应用程序的延迟。 +Predicted Outputs 现已可通过最新的 `gpt-4o`, `gpt-4o-mini`, `gpt-4.1`, `gpt-4.1-mini`,模型使用,且 `gpt-4.1-nano` 。请继续阅读,了解如何使用 Predicted Outputs 降低应用的延迟。 ## 代码重构示例 -Predicted Outputs 特别适用于对文本文档和代码文件进行小幅修改后重新生成。假设你希望让 [GPT-4o 模型](https://developers.openai.com/api/docs/models#gpt-4o) 重构一段 JavaScript 代码,并将 `username` 类的 `User` 属性改为 `email` : +Predicted Outputs 特别适合用于在少量修改的情况下重新生成文本文档和代码文件。假设你希望让 [GPT-4o 模型](https://developers.openai.com/api/docs/models#gpt-4o) 重构一段 JavaScript 代码,并将该类的 `username` 属性转换为 `User` : `email` : ```javascript class User { @@ -21,9 +21,9 @@ export default User; ``` -除了上面第 4 行之外,文件大部分保持不变。如果你将当前代码文件的内容作为预测文本,就可以用更低的延迟重新生成整个文件。对于更大的文件,这些时间节省会迅速累积起来。 +除了上面第 4 行之外,文件的大部分内容保持不变。如果你使用代码文件的当前文本作为预测,就可以以更低的延迟重新生成整个文件。对于较大的文件来说,这些节省的时间会迅速累积。 -下面是在我们的 SDK 中使用 `prediction` 参数的示例,用于预测模型的最终输出与我们的原始代码文件非常相似,并将其用作预测文本。 +下面是一个示例,展示如何在我们的 `prediction` 开发工具包 中使用该参数来预测模型的最终输出将与我们的原始代码文件非常相似,我们将其用作预测文本。SDK。 使用 Predicted Output 重构 JavaScript 类 @@ -183,6 +183,41 @@ client.chat().completions().create(params).choices().stream() .forEach(System.out::println); ``` +```csharp +using OpenAI.Chat; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +string model = "gpt-4.1"; +ChatClient client = new(model, key); + +string code = + """ + class User { + firstName = ""; + lastName = ""; + username = ""; + } + + export default User; + """; +ChatCompletionOptions options = new() +{ + OutputPrediction = ChatOutputPrediction.CreateStaticContentPrediction(code), +}; +ChatCompletion completion = await client.CompleteChatAsync( + [ + new UserChatMessage( + "Replace the username property with an email property. Respond only with code, and with no markdown formatting." + ), + new UserChatMessage(code), + ], + options +); + +Console.WriteLine(completion.Content[0].Text); +``` + ```ruby require "openai" @@ -237,7 +272,7 @@ curl https://api.openai.com/v1/chat/completions \ ``` -除了重构后的代码外,去除 `choices` 字段的精简版模型响应包含类似如下的使用数据: +除了重构后的代码之外,缺少 `choices` 字段的精简模型响应具有如下使用数据: ```json { @@ -261,17 +296,17 @@ curl https://api.openai.com/v1/chat/completions \ } ``` -请注意 `accepted_prediction_tokens` 和 `rejected_prediction_tokens` 对象中的 `usage` 。在本例中,预测中有 14 个 token 被用于加速响应,而 2 个被拒绝。 +请注意 `accepted_prediction_tokens` 和 `rejected_prediction_tokens` 对象中的 `usage` 。在此示例中,预测中有 14 个 token 被用于加速响应,另有 2 个被拒绝。 -请注意,任何被拒绝的 token 仍会像其他 completion token 一样计费 - 由 API 生成,因此 Predicted Outputs 可能会让你的 - 请求产生更高的费用。 +请注意,任何被拒绝的 token 与其他补全 token 一样仍然会计费 + ,这些 token 由 API 生成,因此 Predicted Outputs 可能会带来更高的 + 请求成本。 ## 流式传输示例 -在使用 API 响应流式输出时,Predicted Outputs 的延迟优势会更加明显。下面是同一个代码重构用例的示例,但改用 OpenAI SDK 实现流式输出。 +当你对 API 响应使用流式传输时,Predicted Outputs 的延迟优势会更为显著。下面是同一个代码重构用例的示例,但改为在 OpenAI SDK 中使用流式传输。 -Predicted Outputs 与流式输出 +使用流式传输的 Predicted Outputs ```javascript import OpenAI from "openai"; @@ -443,6 +478,48 @@ try (StreamResponse stream = } ``` +```csharp +using OpenAI.Chat; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +string model = "gpt-4.1"; +ChatClient client = new(model, key); + +string code = + """ + class User { + firstName = ""; + lastName = ""; + username = ""; + } + + export default User; + """; +ChatCompletionOptions options = new() +{ + OutputPrediction = ChatOutputPrediction.CreateStaticContentPrediction(code), +}; + +await foreach ( + StreamingChatCompletionUpdate update in client.CompleteChatStreamingAsync( + [ + new UserChatMessage( + "Replace the username property with an email property. Respond only with code, and with no markdown formatting." + ), + new UserChatMessage(code), + ], + options + ) +) +{ + foreach (ChatMessageContentPart part in update.ContentUpdate) + { + Console.Write(part.Text); + } +} +``` + ```ruby require "openai" @@ -476,7 +553,7 @@ stream.text.each { |text| print(text) } ## 响应中预测文本的位置 -在提供预测文本时,你的预测可以出现在生成响应中的任何位置,并且仍然能为该响应降低延迟。假设你的预测文本是下面这个简单的 [Hono](https://hono.dev/) 服务器: +提供预测文本时,你的预测可以出现在生成响应中的任何位置,并仍然为该响应降低延迟。假设你预测的文本是简单的 [Hono](https://hono.dev/) 服务器,如下所示: ```javascript import { serve } from "@hono/node-server"; @@ -516,7 +593,7 @@ file again with this route added, and with no other markdown formatting. ``` -针对该提示的响应可能看起来像这样: +对该提示的响应可能类似于: ```javascript import { serve } from "@hono/node-server"; @@ -551,7 +628,7 @@ serve({ ``` -一个经过精简的不包含 `choices` 字段的模型响应仍然会显示已接受的预测 token,即使预测文本出现在响应中新增内容的前后: +不包含 `choices` 字段的简化版模型响应仍然会显示被接受的预测 token,尽管预测文本既出现在响应中新增内容之前,也出现在之后: ```json { @@ -575,20 +652,20 @@ serve({ } ``` -这一次没有出现被拒绝的预测 token,因为我们预测的文件的所有内容都被用于最终响应。非常棒!🔥 +这一次没有被拒绝的预测 token,因为我们预测的文件全部内容都被用于最终响应。太好了!🔥 -## 局限性 +## 限制 -使用 Predicted Outputs 时,应考虑以下因素和限制。 +在使用 Predicted Outputs 时,你应当考虑以下因素与限制。 -- Predicted Outputs 仅支持 GPT-4o、GPT-4o-mini、GPT-4.1、GPT-4.1-mini 和 GPT-4.1-nano 系列模型。 -- 在提供预测时,任何不属于最终补全的 token 仍按补全 token 费率计费。详见 [`rejected_prediction_tokens` 对象的 `usage` 属性](https://developers.openai.com/api/reference/resources/chat#chat/object-usage) ,了解最终响应中有多少 token 未被使用。 -- 以下 [API 参数](https://developers.openai.com/api/reference/resources/chat) 在使用 Predicted Outputs 时不受支持: - - `n`:不支持大于 1 的值 - - `logprobs`:不支持 - - `presence_penalty`:不支持大于 0 的值 - - `frequency_penalty`:不支持大于 0 的值 - - `audio`:Predicted Outputs 与 [音频输入和输出](https://developers.openai.com/api/docs/guides/audio) - - `modalities`:仅支持 `text` 模态 - - `max_completion_tokens`:不支持 - - `tools`:Predicted Outputs 当前不支持函数调用 \ No newline at end of file +- Predicted Outputs 仅在 GPT-4o、GPT-4o-mini、GPT-4.1、GPT-4.1-mini 和 GPT-4.1-nano 系列模型中受支持。 +- 提供预测时,任何未出现在最终补全中的 token 仍按补全 token 费率计费。请参阅 [`rejected_prediction_tokens` 对象的 `usage` 属性](https://developers.openai.com/api/reference/resources/chat#chat/object-usage) 以查看最终响应中有多少 token 未被使用。 +- 以下 [API 参数](https://developers.openai.com/api/reference/resources/chat) 在使用时不支持 Predicted Outputs: + - `n`: 不支持高于 1 的值 + - `logprobs`: 不支持 + - `presence_penalty`: 不支持大于 0 的值 + - `frequency_penalty`: 不支持大于 0 的值 + - `audio`: Predicted Outputs 与 [音频输入和输出](https://developers.openai.com/api/docs/guides/audio) + - `modalities`: 仅支持 `text` 模态 + - `max_completion_tokens`: 不支持 + - `tools`: 当前 Predicted Outputs 不支持函数调用 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/prompting/migrate-from-prompt-object.md b/docs/zh/api/docs/guides/prompting/migrate-from-prompt-object.md index 61a6220..0d2aae8 100644 --- a/docs/zh/api/docs/guides/prompting/migrate-from-prompt-object.md +++ b/docs/zh/api/docs/guides/prompting/migrate-from-prompt-object.md @@ -1,18 +1,18 @@ -# 从 prompt 对象迁移 +# 从提示对象迁移 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取对应文档页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -OpenAI 将弃用 API 中的可复用提示对象。提示创建功能将于 - 2026 年 6 月 3 日起弱化,并于 `v1/prompts` 计划于 - 2026 年 11 月 30 日关闭。参见 [弃用 - 页面](https://developers.openai.com/api/docs/deprecations#2026-06-03-reusable-prompts) 针对当前 +OpenAI 即将弃用 API 中的可复用提示对象。提示创建功能将 + 自 2026 年 6 月 3 日起逐步弱化,并且 `v1/prompts` 计划于 + 2026 年 11 月 30 日下线。详见 [弃用 + 页面](https://developers.openai.com/api/docs/deprecations#2026-06-03-reusable-prompts) 用于当前 时间线。 -若要从 **Prompts** 迁移到 OpenAI API 平台中的托管对象,请把提示内容移出托管对象,并写入到你的应用代码里。 `prompt` 这样你可以更自由地控制审核、测试、部署和版本管理。 +若要从 **Prompts** 平台迁出,请将提示内容从托管的 OpenAI API `prompt` 对象中移出,并转移到你的应用代码中。这样你可以更好地掌控审阅、测试、部署和版本管理。 -## Before: using a Prompt Object +## Before:使用 Prompt 对象 -使用 prompt 对象 +使用提示对象 ```javascript import OpenAI from "openai"; @@ -147,9 +147,9 @@ curl https://api.openai.com/v1/responses \ ``` -## 之后:将提示内联到代码中 +## After:在代码中内联提示词 -将提示内联到代码中 +将提示内联在代码中 ```javascript import OpenAI from "openai"; @@ -258,6 +258,28 @@ client.responses().create(params).output().stream() .forEach(text -> System.out.println(text.text())); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +ResponseResult response = await client.CreateResponseAsync( + "gpt-5.6", + [ + ResponseItem.CreateSystemMessageItem( + "You are a helpful support assistant. Be concise, accurate, and friendly." + ), + ResponseItem.CreateUserMessageItem( + "Customer name: Acme. Issue: billing question. Write a response to the customer." + ), + ] +); + +Console.WriteLine(response.GetOutputText()); +``` + ```ruby require "openai" @@ -302,7 +324,7 @@ curl https://api.openai.com/v1/responses \ ## 使用 Codex 进行迁移 -使用 [OpenAI Developers 插件](https://developers.openai.com/learn/developers-codex-plugin) 和 [OpenAI Docs 技能](https://github.com/openai/skills/tree/main/skills/.curated/openai-docs) 来自动化你的迁移,并加速基于 OpenAI API 的构建。 +使用 [OpenAI Developers 插件](https://developers.openai.com/learn/developers-codex-plugin) 和 [OpenAI Docs 技能](https://github.com/openai/skills/tree/main/skills/.curated/openai-docs) 来自动化你的迁移,并加速使用 OpenAI API 进行构建。 ```text $openai-docs update this project to store prompts in code instead of using a prompts object @@ -310,13 +332,13 @@ $openai-docs update this project to store prompts in code instead of using a pro ## 变更内容 -无需在 API 请求中引用已保存的提示对象,而是将提示文本存放在你的代码库中,并把生成的消息直接作为 `input` 传入 Responses API 调用。 +你无需在 API 请求中引用已保存的提示对象,而是将提示文本存放在代码库中,并把生成的消息直接作为 `input` 传入 Responses API 调用。 -- **将提示内容移入源代码** 以便提示的修改与产品逻辑走同一套评审与发布流程。 -- **用函数参数替换提示变量** 从而让动态值在你的应用中显式且具有类型。 -- **通过 Responses API 调用传递 messages `input`** ,而不是使用 `prompt` 对象。 -- **将版本管理迁移到你的代码仓库** ,借助 git 提交、PR 评审以及测试或评测。 -- **将静态内容放在前面,动态内容放在后面** ,以保留提示缓存带来的好处,因为缓存命中依赖于精确的前缀匹配。 +- **将提示内容移入源代码** 这样提示变更就能和产品逻辑走相同的评审与发布流程。 +- **用函数参数替代提示变量** 让动态值在你的应用中显式且类型化。 +- **通过 Responses API 调用传递 `input`** 消息,而不是使用 `prompt` 对象。 +- **将版本管理迁移到你的代码仓库** 借助 git 提交、PR 评审以及测试或评估。 +- **静态内容放前面、动态内容放后面** 以保留提示缓存带来的收益,因为缓存命中依赖于精确的前缀匹配。 ## 示例 @@ -451,6 +473,30 @@ client.responses().create(params).output().stream() .forEach(text -> System.out.println(text.text())); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +static ResponseItem[] BuildSupportPrompt(string customerName, string issue) => +[ + ResponseItem.CreateSystemMessageItem( + "You are a helpful support assistant. Be concise, accurate, and friendly. Do not invent policy details." + ), + ResponseItem.CreateUserMessageItem( + $"Customer name: {customerName}. Issue: {issue}. Write a response to the customer." + ), +]; + +ResponseResult response = await client.CreateResponseAsync( + "gpt-5.6", + BuildSupportPrompt("Acme", "billing question") +); +Console.WriteLine(response.GetOutputText()); +``` + ```ruby require "openai" @@ -480,6 +526,6 @@ puts(response.output_text) ## 你能获得什么 -你可以获得更精细的工程控制:提示与产品代码放在同一处,更改通过 PR 流程进行,测试和评估可在 CI 中运行,上线或实验可通过你自己的配置或功能开关来管理。 +你可以获得更精细的工程控制:提示词与产品代码一起管理,更改通过 PR 流程进行,测试和评估可以在 CI 中运行,上线或实验可以通过你自己的配置或功能开关来管理。 -不要把提示零散地散布在代码库各处。创建一个小的 `prompts/` 模块,将每个提示作为命名良好的 builder 函数,并为评估添加轻量级的 fixture,使提示变更像产品逻辑一样接受评审。 \ No newline at end of file +不要把提示词分散内联在代码库的各处。创建一个小的 `prompts/` 模块,把每个提示词作为命名构建函数保存,并添加轻量级的评估 fixture,使提示词的修改像产品逻辑一样接受评审。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/realtime-sip.md b/docs/zh/api/docs/guides/realtime-sip.md index f79abeb..5b1bed7 100644 --- a/docs/zh/api/docs/guides/realtime-sip.md +++ b/docs/zh/api/docs/guides/realtime-sip.md @@ -1,29 +1,29 @@ -# Realtime API with SIP +# 使用 SIP 的 Realtime API -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获得文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) 是一种 -用于通过互联网拨打电话的协议。使用 SIP 和 +用于通过互联网拨打电话的协议。通过 SIP 和 Realtime API,你可以将来电转接到 API。 ## 概述 如果要将电话号码接入 Realtime API, -可以使用 SIP 中继服务商(例如 Twilio)。该服务可以将你的电话通话转换为 IP 流量。 -在你从 SIP 中继服务商处购买电话号码后, +可以使用 SIP 中继服务商(例如 Twilio)。该服务会将你的电话通话 +转换为 IP 流量。从 SIP 中继服务商处购买电话号码后, 请按照以下说明操作。 -首先在 [webhook](https://developers.openai.com/api/docs/guides/webhooks) 中为来电创建一个 webhook,通过你的 **platform.openai.com** [设置](https://platform.openai.com/settings) > 项目 > **Webhooks**. -然后,使用你配置了 webhook 的项目 ID,将你的 SIP 中继指向 OpenAI SIP 端点, -例如。, `sip:$PROJECT_ID@sip.api.openai.com;transport=tls`. -如需使用欧洲数据驻留,请使用 `sip:$PROJECT_ID@sip-eu.api.openai.com;transport=tls` 。 -要查找你的 `$PROJECT_ID`,请访问 [设置](https://platform.openai.com/settings) > 项目 > **常规**。该页面将显示项目 ID,该 ID -具有 `proj_` 前缀。 +首先创建一个用于 [来电接入的 webhook](https://developers.openai.com/api/docs/guides/webhooks) ,通过你的 **platform.openai.com** [settings](https://platform.openai.com/settings) > 项目 > **Webhooks**. +进行配置。然后,将你的 SIP 中继指向 OpenAI SIP 接入点,使用配置 webhook 时所用的项目 ID, +例如: `sip:$PROJECT_ID@sip.api.openai.com;transport=tls`. +如需欧洲数据驻留,请使用 `sip:$PROJECT_ID@sip-eu.api.openai.com;transport=tls` 。要查找你的。 +,请访问 `$PROJECT_ID`,访问 [settings](https://platform.openai.com/settings) > 项目 > **常规**。该页面会显示项目 ID,其 +格式为 `proj_` 前缀。 -当 OpenAI 收到与你的项目关联的 SIP 流量时, -你的 Webhook 就会被触发。触发的事件将是 +当 OpenAI 接收到与你的项目关联的 SIP 流量时, +你的 webhook 将被触发。触发的事件将是 [`realtime.call.incoming`](https://developers.openai.com/api/reference/resources/webhooks) 事件, -如下例所示: +如下示例所示: ``` POST https://my_website.com/webhook_endpoint @@ -49,20 +49,20 @@ webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= # signature t } ``` -通过这个 Webhook,你可以使用 Webhook 中的 `call_id` 值来接听或拒接通话。 -接听通话时,你需要为 Realtime API 会话提供所需的配置 +通过该 webhook,你可以使用 webhook 中的 `call_id` 值来接受或拒接通话。 +在接受通话时,你需要为 Realtime API 会话提供所需的配置 (指令、语音等)。 -会话建立后,你可以像往常一样设置 WebSocket 并监控该会话。用于接听、拒接、监控、转接和挂断通话的 API -将在下方文档中说明。 +会话建立后,你可以像往常一样设置 WebSocket 并监控该会话。用于 +接受、拒接、监控、转接和挂断通话的 API 如下文档所述。 -## Accept the call +## 接受调用 -使用 [Accept call 端点](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/accept) 来 -批准来电并配置将应答该来电的实时会话。 -发送与在 +使用 [Accept call endpoint](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/accept) 以 +批准来电并配置将用于应答该来电的实时会话。 +发送你在 [`create client secret`](https://developers.openai.com/api/reference/resources/realtime/subresources/client_secrets/methods/create) -请求中相同的参数,即确保在将 -通话桥接到模型之前设置好实时模型、语音、工具或指令。 +请求中原本会发送的相同参数,即确保在将 +通话桥接到模型之前,实时模型、语音、工具或指令已设置好。 ```bash curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/accept" \ @@ -78,17 +78,17 @@ curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/accept" \ 请求路径必须包含来自 `call_id` webhook 的 [`realtime.call.incoming`](https://developers.openai.com/api/reference/resources/webhooks) -,并且每个请求都需要上面所示的 `Authorization` 请求头。 -端点会在 `200 OK` 返回一次,此时 SIP 线路正在响铃且实时会话 -正在建立。 +,并且每个请求都需要上文所示的 `Authorization` 请求头。 +端点会在 `200 OK` 返回,前提是 SIP 通道正在响铃并且实时会话 +正在建立中。 ## 拒绝调用 -使用 [Reject call endpoint](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/reject) 来 -当你不想处理来电时可以拒绝邀请,(例如,来自 -不受支持的国家代码)。提供 `call_id` 路径参数 -以及一个可选的 SIP `status_code` (例如, `486` 用于表示“忙”)以 JSON 形式 -body to control the response sent back to the carrier. +使用 [拒绝来电端点](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/reject) 以 +当你不希望处理来电时拒绝邀请(例如,来自 +不支持的国家代码)。提供 `call_id` 路径参数 +和可选的 SIP `status_code` (例如, `486` 以表示“忙”)在请求体中,以控制发送回运营商的响应。 +在 JSON 请求体中,以控制发送回运营商的响应。 ```bash curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/reject" \ @@ -98,26 +98,26 @@ curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/reject" \ ``` -If no status code is supplied the API uses `603 Decline` by default. A -successful request responds with `200 OK` after OpenAI delivers the SIP -response. +如果未提供状态码,API 默认使用 `603 Decline` 。一个 +成功的请求会返回 `200 OK` ,在 OpenAI 交付 SIP 响应之后 +。 -## 监控通话事件 +## 监控调用事件 -在你接通通话后,向同一个会话打开一个 WebSocket 连接,以 -流式传输事件并发出实时命令。请注意,当通过 -参数连接到已有的 `call_id` 通话时,不会使用 `model` 参数(因为它已经通过 -进行了配置 `accept` 端点)。 +在你接受通话后,向同一会话打开一个 WebSocket 连接以 +流式传输事件并发出实时命令。请注意,当通过现有的 +通话使用 `call_id` 参数连接时, `model` 参数不会被使用(因为它已经通过 +端点配置过了 `accept` )。 -### WebSocket 请求 +### WebSocket request `GET wss://api.openai.com/v1/realtime?call_id={call_id}` -### 查询参数 +### Query parameters -| 参数 | 类型 | 描述 | +| 参数 | 类型 | 说明 | | --------- | ------ | ----------------------------------------------------- | -| `call_id` | string | 来自 `realtime.call.incoming` webhook 的标识符。 | +| `call_id` | string | 来自 webhook 的 `realtime.call.incoming` webhook。 | ### Headers @@ -125,7 +125,7 @@ response. WebSocket 的行为与任何其他 Realtime API 连接完全一致。发送 [`response.create`](https://developers.openai.com/api/reference/resources/realtime/client-events#response.create), -以及其他客户端事件以控制通话,并监听服务端事件以 +以及其他客户端事件来控制通话,并监听服务端事件来 跟踪进度。请参阅 [Webhooks 和 服务端 控件](https://developers.openai.com/api/docs/guides/realtime-server-controls) 了解更多信息。 @@ -152,8 +152,8 @@ ws.on("open", () => { ## 重定向调用 使用 -[Refer call endpoint](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/refer)。转移进行中的通话。请提供 -`call_id` 以及应放入 SIP 中的 `target_uri` 应放入 SIP 中的内容 `Refer-To` +[Refer call 端点](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/refer)。转接正在进行的通话。提供 +`call_id` 以及 `target_uri` ,该号码应放入 SIP `Refer-To` header(例如 `tel:+14155550123` 或 `sip:agent@example.com`). ```bash @@ -164,14 +164,14 @@ curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/refer" \ ``` -OpenAI 返回 `200 OK` 一旦 REFER 被转交给你的 SIP 提供商,下游 -系统就会处理主叫方后续的呼叫流程。 +OpenAI 返回 `200 OK` REFER 被转发给你的 SIP 提供商后。下游系统负责处理后续的呼叫流程, +包括主叫方的剩余呼叫流程。 ## 挂断通话 -使用 [挂断端点](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/hangup) -结束会话,当你的应用需要断开呼叫方时调用该端点。该端点可用于 -终止 SIP 和 WebRTC 实时会话。 +通过以下方式结束会话: [挂断端点](https://developers.openai.com/api/reference/resources/realtime/subresources/calls/methods/hangup) +在你的应用需要断开来电方时调用。该端点可用于 +同时终止 SIP 和 WebRTC 实时会话。 ```bash curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/hangup" \ @@ -179,23 +179,23 @@ curl -X POST "https://api.openai.com/v1/realtime/calls/$CALL_ID/hangup" \ ``` -API 在开始拆除通话时返回 `200 OK` 。 +该 API 在开始拆除通话时返回响应 `200 OK` 。 ## SIP 信令与媒体 IP 范围 -Realtime SIP calls use separate network paths for signaling and media. To ensure proper operation, -configure your network to allow signaling and media traffic as described below. +实时 SIP 呼叫的信令与媒体使用不同的网络路径。为确保正常运行, +请按照下文所述配置你的网络,以允许信令和媒体流量通过。 -### SIP 信令 +### SIP signaling -`sip.api.openai.com` 并且 `sip-eu.api.openai.com` 是 GeoIP 路由的端点。你的网络必须允许 -通过端口 443 上的 DNS 返回的地址向外发起 TCP/TLS 流量 `5061`. +`sip.api.openai.com` 并且 `sip-eu.api.openai.com` 是按 GeoIP 路由的端点。你的网络必须允许 +对 DNS 在端口上返回的地址发起出站 TCP/TLS 流量 `5061`. ### SRTP media -API 在协商后的 SDP 中指定单独的媒体 IP 地址和 UDP 端口。你的网络必须 +API 在协商的 SDP 中指定了一个独立的媒体 IP 地址和 UDP 端口。你的网络必须 允许通过 UDP 与以下 CIDR 进行双向 SRTP 通信: - `13.79.45.80/28` @@ -203,16 +203,16 @@ API 在协商后的 SDP 中指定单独的媒体 IP 地址和 UDP 端口。你 - `40.67.149.176/28` - `40.83.204.240/28` -## Python 示例 +## 服务端示例 -下面是一个 `realtime.call.incoming` 处理函数的示例。它接受该调用,然后记录来自 +以下是 `realtime.call.incoming` 处理程序示例。它接收呼叫,然后记录来自 Realtime API 的所有事件。 +对于 Ruby 示例,请设置 `OPENAI_API_KEY` 并且 `OPENAI_WEBHOOK_SECRET` +环境变量,然后使用以下命令安装所需的依赖项 +`gem install openai webrick async-websocket`. - -Python - - Python +处理来电 SIP 呼叫 ```python from flask import Flask, request, Response, jsonify, make_response @@ -286,19 +286,82 @@ if __name__ == "__main__": app.run(port=8000) ``` +```ruby +require "openai" +require "webrick" + +client = OpenAI::Client.new(webhook_secret: ENV.fetch("OPENAI_WEBHOOK_SECRET")) +server = WEBrick::HTTPServer.new( + BindAddress: "127.0.0.1", + Port: Integer(ENV.fetch("OPENAI_WEBHOOK_PORT", "8000")), + Logger: WEBrick::Log.new($stderr, WEBrick::BasicLog::WARN), + AccessLog: [] +) +sideband_workers = [] + +server.mount_proc("/webhook") do |request, response| + if request.request_method != "POST" + response.status = 405 + next + end + + headers = request.header.transform_values(&:first) + event = client.webhooks.unwrap(request.body, headers) + + if event.is_a?(OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent) + call_id = event.data.call_id + sideband_workers.select!(&:alive?) + sideband_workers << Thread.new(call_id) do |active_call_id| + client.realtime.calls.accept( + active_call_id, + type: :realtime, + model: "gpt-realtime-2.1", + instructions: "You are a helpful support agent." + ) + + client.realtime.connect_to_call(call_id: active_call_id) do |connection| + connection.response.create( + instructions: "Thank the caller and ask how you can help." + ) + connection.each do |server_event| + puts "Realtime event: #{server_event.type}" + end + end + end + end + + response.status = 200 + response.body = "ok" +rescue OpenAI::Errors::InvalidWebhookSignatureError, ArgumentError + response.status = 400 + response.body = "Invalid signature" +ensure + server.shutdown if ENV["OPENAI_WEBHOOK_EXIT_AFTER_REQUEST"] == "1" +end + +Signal.trap("INT") do + sideband_workers.each(&:kill) + server.shutdown +end +port = server.listeners.first.addr[1] +puts "Webhook server listening on http://127.0.0.1:#{port}/webhook" +$stdout.flush +server.start +sideband_workers.each(&:join) +``` -## 后续步骤 +## 下一步 -既然你已经通过 SIP 建立了连接,可以使用左侧导航或点击这些页面来开始构建你的实时应用。 +既然你已经通过 SIP 完成连接,现在可以使用左侧导航或点击以下页面,开始构建你的实时应用。 -- [实时提示指南](https://developers.openai.com/api/docs/guides/realtime-models-prompting) +- [Realtime 提示指南](https://developers.openai.com/api/docs/guides/realtime-models-prompting) - [管理对话](https://developers.openai.com/api/docs/guides/realtime-conversations) -- [Webhook 与服务端控制](https://developers.openai.com/api/docs/guides/realtime-server-controls) +- [Webhooks 和服务端控制](https://developers.openai.com/api/docs/guides/realtime-server-controls) - [管理成本](https://developers.openai.com/api/docs/guides/realtime-costs) -- [实时转录](https://developers.openai.com/api/docs/guides/realtime-transcription) +- [Realtime 转录](https://developers.openai.com/api/docs/guides/realtime-transcription) ### 其他资源 - [JavaScript 演示](https://hello-realtime.val.run/) -- [将 Realtime SIP 连接器接入 Twilio Elastic SIP Trunking](https://www.twilio.com/en-us/blog/developers/tutorials/product/openai-realtime-api-elastic-sip-trunking) \ No newline at end of file +- [将 Realtime SIP Connector 连接到 Twilio Elastic SIP Trunking](https://www.twilio.com/en-us/blog/developers/tutorials/product/openai-realtime-api-elastic-sip-trunking) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/realtime-websocket.md b/docs/zh/api/docs/guides/realtime-websocket.md index 708ea61..83d39fb 100644 --- a/docs/zh/api/docs/guides/realtime-websocket.md +++ b/docs/zh/api/docs/guides/realtime-websocket.md @@ -1,18 +1,18 @@ -# Realtime API with WebSocket +# 基于 WebSocket 的 Realtime API -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾附加 `.md` 即可获取文档页面的 Markdown 版本。 -[WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) 是一类广泛支持的 API,适用于实时数据传输,是在服务端到服务端应用中连接 OpenAI Realtime API 的理想选择。对于浏览器和移动客户端,我们推荐通过以下方式连接 [WebRTC](https://developers.openai.com/api/docs/guides/realtime-webrtc). +[WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) 是一种广泛支持的 API,可用于实时数据传输,是在服务端到服务端应用中连接 OpenAI Realtime API 的理想选择。对于浏览器和移动端客户端,我们建议通过 [WebRTC](https://developers.openai.com/api/docs/guides/realtime-webrtc). -在与 Realtime 的服务端到服务端集成中,你的后端系统将通过 WebSocket 直接连接到 Realtime API。你可以使用 [标准的 API key](https://platform.openai.com/settings/organization/api-keys) 对该连接进行身份验证,因为该令牌仅在你的安全后端服务器上可用。 +在服务端到服务端的 Realtime 集成中,你的后端系统将通过 WebSocket 直接连接到 Realtime API。你可以使用 [标准 API 密钥](https://platform.openai.com/settings/organization/api-keys) 来对该连接进行身份验证,因为该令牌仅在你安全的后端服务器上可用。 ![直接连接到 realtime API](https://openaidevs.retool.com/api/file/464d4334-c467-4862-901b-d0c6847f003a) ## 通过 WebSocket 连接 -以下是几个通过 WebSocket 连接到 Realtime API 的示例。除了使用下面的 WebSocket URL 之外,你还需要使用你的 OpenAI API 密钥传递认证头。如果你的应用分配 [安全标识符](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers),请在 `OpenAI-Safety-Identifier` 请求头中传递该终端用户的稳定且保护隐私的标识符。 +以下是通过 WebSocket 连接到 Realtime API 的几个示例。除了使用下面的 WebSocket URL 外,你还需要使用你的 OpenAI API 密钥传递身份验证头。如果你的应用分配 [安全标识符](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers),请在标头中传递终端用户的稳定且保护隐私的标识符 `OpenAI-Safety-Identifier` 标头。 -在浏览器中可以使用带有临时 API 令牌的 WebSocket,如 [WebRTC 连接指南](https://developers.openai.com/api/docs/guides/realtime-webrtc),所示,但如果你是从浏览器或移动应用等客户端进行连接,在大多数情况下 WebRTC 会是更稳健的方案。 +如以下示例所示,在浏览器中配合临时 API 令牌使用 WebSocket 是可行的, [WebRTC 连接指南](https://developers.openai.com/api/docs/guides/realtime-webrtc),但如果你从浏览器或移动应用等客户端连接,在大多数情况下 WebRTC 会是更稳健的方案。 @@ -90,6 +90,34 @@ ws.run_forever() +OpenAI SDK(Ruby) + + + + Install the required gems with + `gem install openai async-websocket`. + + + Connect with the OpenAI SDK (Ruby) + +```ruby +require "openai" + +client = OpenAI::Client.new( + default_headers: {"OpenAI-Safety-Identifier" => "hashed-user-id"} +) + +client.realtime.connect(model: "gpt-realtime-2.1") do |connection| + puts("Connected to the Realtime API: #{connection.url.host}") + connection.each { |event| puts("Received event: #{event.type}") } +end +``` + + + + + + WebSocket(浏览器) Connect with standard WebSocket (browsers) @@ -127,9 +155,9 @@ ws.addEventListener("message", function incoming(event) { ## 发送和接收事件 -Realtime API 会话通过组合以下方式来管理: [客户端发送的事件](https://developers.openai.com/api/reference/resources/realtime/client-events#session.update) (由你作为开发者发送),以及 [服务端发送的事件](https://developers.openai.com/api/reference/resources/realtime/server-events#error) 由 Realtime API 创建,用于指示会话生命周期事件。 +Realtime API 会话通过以下两者结合进行管理: [客户端发送的事件](https://developers.openai.com/api/reference/resources/realtime/client-events#session.update) (由你作为开发者发送)以及 [服务端发送的事件](https://developers.openai.com/api/reference/resources/realtime/server-events#error) (由 Realtime API 生成,用于指示会话生命周期事件)。 -通过 WebSocket,你会同时发送和接收 JSON 序列化的事件(以文本字符串形式),如下面的 Node.js 示例所示(其他 WebSocket 库同样适用): +在 WebSocket 上,你将同时发送和接收以文本字符串形式进行 JSON 序列化的事件,如下方 Node.js 示例所示(其他 WebSocket 库同样适用相同原则): ```javascript import WebSocket from "ws"; @@ -164,6 +192,6 @@ ws.on("message", function incoming(message) { ``` -WebSocket 接口或许是与 Realtime 模型交互的最低层级接口,你需要负责通过套接字连接发送和处理 Base64 编码的音频块。 +WebSocket 接口可能是与 Realtime 模型交互可用的最低层级接口,你需要负责通过 socket 连接同时发送和处理 Base64 编码的音频数据块。 -要了解如何通过 WebSocket 发送和接收音频,请参阅 [Realtime 对话指南](https://developers.openai.com/api/docs/guides/realtime-conversations#handling-audio-with-websockets). \ No newline at end of file +要了解如何通过 WebSocket 发送和接收音频,请参阅 [Realtime conversations 指南](https://developers.openai.com/api/docs/guides/realtime-conversations#handling-audio-with-websockets). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/safety-best-practices.md b/docs/zh/api/docs/guides/safety-best-practices.md index bbaa72d..aecef93 100644 --- a/docs/zh/api/docs/guides/safety-best-practices.md +++ b/docs/zh/api/docs/guides/safety-best-practices.md @@ -1,67 +1,82 @@ # 安全最佳实践 -> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。你也可以在页面 URL 末尾追加 `.md` 来获取对应页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。如需获取页面的 Markdown 版本,可在页面 URL 末尾添加 `.md` 。 -### 使用我们的免费 Moderation API +### 使用我们免费的 Moderation API -OpenAI 的 [Moderation API](https://developers.openai.com/api/docs/guides/moderation) 可免费使用,并有助于降低补全内容中出现不安全内容的频率。你也可以自行构建适合你用例的内容过滤系统。 +OpenAI的 [审核 API](https://developers.openai.com/api/docs/guides/moderation) 可以免费使用,并能帮助你降低补全结果中出现不安全内容的频率。你也可以根据自己的用例开发定制的内容过滤系统。 如果你的应用使用 Responses API 或 Chat Completions 生成文本, -你还可以 [在生成请求中请求 moderation 评分 +你还可以 [在生成时请求审核打分 请求](https://developers.openai.com/api/docs/guides/moderation#moderate-generated-content). ### 对抗性测试 -我们建议对应用进行“红队测试”,以确保它对对抗性输入具有鲁棒性。在广泛且多样化的输入和用户行为上测试你的产品,既要覆盖有代表性的样本,也要覆盖那些试图“破坏”你应用的行为。它是否会偏离主题?是否有人能通过提示注入轻松重定向该功能,例如“忽略之前的指令,改做这件事”? +我们建议对你的应用进行“红队测试”,以确保它在面对对抗性输入时具有足够的稳健性。使用各种输入和用户行为来测试你的产品,既包括一组具有代表性的用例,也包括那些试图“破坏”你应用的行为。它是否会偏离主题?是否有人可以通过提示注入轻易地重定向该功能,例如“忽略之前的指令,改成执行这个”? ### 人在回路(HITL) -只要条件允许,我们建议在实际使用前由人工对输出进行审核。这在高风险领域以及代码生成场景中尤为关键。审核人员应了解系统的局限性,并能够访问验证输出所需的全部信息(例如,如果应用是对笔记进行摘要,审核人员应能方便地查阅原始笔记以做参照)。 +在可能的情况下,我们建议在实际使用前由人工对输出进行审核。在高风险领域以及代码生成场景中,这一点尤为关键。相关人员应了解系统的局限性,并能够访问验证输出所需的任何信息(例如,如果应用对笔记进行摘要,相应人员应能便捷地查阅原始笔记以便回溯)。 -### Prompt engineering +### 提示工程 -“提示工程”有助于约束输出文本的主题和语气。这样即使用户试图生成不希望出现的内容,也能降低生成此类内容的概率。为模型提供额外上下文(例如在新的输入之前给出几个高质量的期望行为示例),可以更容易地将模型输出引导到期望的方向上。 +“提示工程”有助于约束输出文本的主题和语气。这降低了生成不良内容的几率,即使有用户试图生成此类内容。为模型提供额外上下文(例如在新的输入之前给出几个期望行为的高质量示例)可以更轻松地将模型输出引导到期望的方向。 -### “Know your customer”(KYC) +### “了解你的客户”(KYC) -用户通常需要注册并登录才能访问你的服务。将此服务链接到现有账号(例如 Gmail、LinkedIn 或 Facebook 登录)可能会有所帮助,但并非适用于所有用例。要求提供信用卡或身份证件可进一步降低风险。 +用户通常需要注册并登录才能访问你的服务。可以将此服务关联到现有账号(例如 Gmail、LinkedIn 或 Facebook 登录),这可能会有所帮助,但并非适用于所有用例。要求提供信用卡或身份证件可进一步降低风险。 -### 约束用户输入并限制输出 token 数量 +### 约束用户输入并限制输出 token -限制用户在提示中可输入的文本量有助于避免提示注入。限制输出 token 的数量有助于减少滥用的可能。 +限制用户在提示中可以输入的文本量有助于避免提示注入。限制输出令牌的数量有助于降低滥用的可能性。 -缩小输入或输出的范围,尤其是来自可信来源的范围,可以降低应用内可能出现的滥用程度。 +收窄输入或输出的范围,尤其是来自可信来源的内容,可以减少应用内可能发生的滥用程度。 -通过经过验证的下拉字段(例如,维基百科上的电影列表)允许用户输入,比允许开放式文本输入更安全。 +通过经过验证的下拉字段(例如维基百科上的电影列表)允许用户输入,比允许开放式文本输入更安全。 -在可能的情况下,从后端一组经过验证的资料中返回输出,比返回全新生成的内容更安全(例如,将客户查询路由到最匹配的现有客户支持文章,而不是尝试从头回答该查询)。 +在后端从经过验证的材料集合中返回输出(如果可能)比返回新生成的内容更安全(例如,将客户查询路由到最匹配的现有客户支持文章,而不是从头尝试回答该查询)。 ### 允许用户报告问题 -用户通常应有一种便捷的方法来举报应用功能异常或对应用行为的其他顾虑(例如公开的电子邮件地址、工单提交方式等)。该方法应有人工监控并酌情予以响应。 +用户通常应可通过便捷的方式报告应用行为中的异常功能或其他问题(例如提供电子邮箱地址、工单提交方式等)。该渠道应由人工监控,并酌情予以回应。 -### 理解并传达各项限制 +### 理解并说明各项限制 -从虚构不准确的信息,到具有攻击性的输出,再到偏见以及其他诸多问题,语言模型如果不进行大量修改,可能并不适合每一种使用场景。请考虑模型是否适合你的用途,并在尽可能广泛的潜在输入范围内评估 API 的性能,以识别 API 性能可能下降的场景。请考虑你的用户群体以及他们将使用的输入范围,并确保他们的期望得到恰当的校准。 +从生成不准确的信息,到产生不当输出,再到出现偏见等等,原始的语言模型未必适合每一种使用场景,需要进行大量修改。请考虑模型是否适合你的用途,并在广泛的潜在输入范围内评估 API 的性能,以识别 API 性能可能下降的情况。请考虑你的客户群体以及他们将使用的输入范围,并确保他们的期望得到合理的校准。 -**安全与保障对 OpenAI 而言至关重要。**. +**安全与保障对 OpenAI 而言至关重要**. -如果你在使用 API 开发的过程中,或在任何与 OpenAI 相关的内容中,发现任何安全或保障问题,请通过我们的 [协调漏洞披露计划](https://openai.com/security/disclosure/). +如果你在使用 API 进行开发的过程中发现任何安全或保障相关的问题,或任何与 OpenAI 相关的问题,请通过我们的 [协调漏洞披露计划](https://openai.com/security/disclosure/). ### 实现安全标识符 -在请求中发送安全标识符可以帮助 OpenAI 监控和检测滥用行为。这使得 OpenAI 能够在检测到你的应用存在任何策略违规时,向你的团队提供更具可操作性的反馈。 +在你的请求中发送安全标识符可以帮助 OpenAI 监控和检测滥用行为。当我们检测到你的应用存在任何违规行为时,这可以让 OpenAI 为你的团队提供更具可操作性的反馈。 -安全标识符还可以帮助你的团队更快地响应滥用行为。它们创建了一种稳定的方式来 追踪 与单个最终用户相关的活动,并降低因某个用户的误用而影响整个组织访问的可能性。 +安全标识符还可以帮助你的团队更快地应对滥用行为。它们提供了一种稳定的方式来 追踪 活动到单个终端用户,并降低某个用户的误用影响更广泛组织访问的可能性。 -安全标识符应该是一个能够唯一标识每个用户的字符串。对用户名或电子邮件地址进行哈希处理,以避免向我们发送任何可识别信息。如果你向未登录的用户提供产品预览,可以改为发送会话 ID。 +安全标识符应当是一个能够唯一标识每个用户的字符串。对用户名或电子邮件地址进行哈希处理,以避免向我们发送任何身份信息。如果你向未登录的用户提供产品预览,你可以改为发送会话 ID。 -对于单个用户与模型交互的产品,建议使用安全标识符, -但并非必需。请将安全标识符包含在你的 API 请求中。 -使用 `safety_identifier` 参数: +安全标识符推荐用于存在用户与模型交互的产品, +但并非强制要求。请在你的 API +请求中通过以下 `safety_identifier` 参数包含安全标识符: 示例:提供安全标识符 +```javascript +import OpenAI from "openai"; + +const client = new OpenAI(); + +const response = await client.chat.completions.create({ + model: "gpt-5.6", + messages: [{ role: "user", content: "This is a test" }], + max_completion_tokens: 5, + safety_identifier: "user_123456", +}); + +console.log(response.choices[0].message.content); +``` + ```python from openai import OpenAI @@ -145,27 +160,27 @@ curl https://api.openai.com/v1/chat/completions \ ``` -对于 Realtime API 请求,请提供相同的稳定且保护隐私的标识符 -使用 `OpenAI-Safety-Identifier` 请求头。当你创建一个临时 Realtime -客户端密钥时,请在创建该密钥的服务端请求中携带该请求头,以便将标识符绑定到该会话。对于从受信后端发起的直接 WebSocket 或 WebRTC -连接请求,请在创建该密钥的请求中携带该请求头,以便将标识符绑定到该会话。对于从受信后端发起的直接 WebSocket 或 WebRTC -连接请求中携带该请求头。 -连接请求。 +对于 Realtime API 请求,提供同样的稳定且保护隐私的标识符 +,使用 `OpenAI-Safety-Identifier` 请求头。当你创建一个临时的 Realtime +客户端密钥时,请在创建该密钥的 服务端 请求中包含该请求头, +以便将标识符绑定到该会话。对于从受信后端发起的直接 WebSocket 或 WebRTC +连接请求,请在 +连接请求中包含该请求头。 -安全标识符不会在 API 或会话之间传递。如果你的 -应用程序已经发送 `safety_identifier` 随 Responses API 请求一起发送,请在创建或连接每个 Realtime -会话时单独传入相同的稳定值, -会话。 +安全标识符不会在不同的 API 或会话之间传递。如果你的 +应用已经使用 `safety_identifier` 随 Responses API 请求一起发送,请在创建或连接每个 Realtime +会话时单独传递相同的稳定值。 +。 ### 撤销已泄露的 API 密钥 -如果你认为某个 API 密钥已泄露、被滥用或以其他方式遭到破坏, -请立即撤销该密钥并替换为新密钥。请前往你的 [安全 -设置](https://platform.openai.com/settings/profile/security) 查看所有 API +如果你认为某个 API 密钥已被泄露、误用或以其他方式遭到破坏, +请立即撤销该密钥并用新密钥替换。进入你的 [Security +settings](https://platform.openai.com/settings/profile/security) 查看所有 API 密钥并撤销任何已泄露的密钥。 ### CSAM 指南 -OpenAI 与 NCMEC、Thorn 等儿童安全领域的专家合作,为 -开发者提供保护儿童的实用指引。 [阅读 CSAM -指引](https://developers.openai.com/api/docs/guides/csam-guidance). \ No newline at end of file +OpenAI 与儿童安全领域的专家(包括 NCMEC 和 Thorn)合作,为开发者提供 +保护儿童的实用指导。 [阅读 CSAM +指南](https://developers.openai.com/api/docs/guides/csam-guidance). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/safety-checks.md b/docs/zh/api/docs/guides/safety-checks.md index 9325125..f458ceb 100644 --- a/docs/zh/api/docs/guides/safety-checks.md +++ b/docs/zh/api/docs/guides/safety-checks.md @@ -1,31 +1,31 @@ # 安全检查 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取文档页面的 Markdown 版本。 我们会对模型及其使用方式运行多种类型的评估。本指南介绍我们如何进行安全测试,以及你可以采取哪些措施来避免违规。 ## GPT-5 及后续版本的安全分类器 -随着 [GPT-5](https://developers.openai.com/api/docs/models/gpt-5),我们新增了一些检查机制,以发现并阻止危险信息的访问。在使用场景广泛的应用程序中,用户可能会尝试将你的应用用于OpenAI策略之外的目的。 +随着 [GPT-5](https://developers.openai.com/api/docs/models/gpt-5),我们添加了一些检查,用于发现并阻止危险信息的访问。有些用户最终可能会将你的应用用于OpenAI政策之外的目的,尤其是在使用场景广泛的应用中。 ### 安全分类器流程 -1. 我们将发往 GPT-5 的请求按风险阈值进行分级。 -1. 如果你的组织反复触及高阈值,OpenAI 会返回错误并发送一封告警邮件。 -1. 如果请求在规定的时间阈值(通常为七天)后仍然继续,我们会停止你的组织对 GPT-5 的访问。请求将不再可用。 +1. 我们将发往 GPT-5 的请求按风险阈值进行分类。 +1. 如果你的组织反复达到高阈值,OpenAI 会返回错误并发送警告邮件。 +1. 如果请求在规定的时间阈值(通常为七天)后仍然继续,就会停止你的组织对 GPT-5 的访问,请求将不再生效。 ### 如何避免错误、延迟和封禁 -如果你的组织从事违反我们安全策略的可疑活动,我们可能会返回错误、限制模型访问,甚至封禁你的账户。以下安全措施可帮助我们识别高风险请求的来源,并封禁个别终端用户,而不是封禁你的整个组织。 +如果你的组织从事违反我们安全政策的可疑活动,我们可能会返回错误、限制模型访问,甚至封禁你的账户。以下安全措施有助于我们识别高风险请求的来源,并封禁相应的最终用户,而不是封禁整个组织。 -- [实施安全标识符](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers) ,适用于个人用户与模型交互的产品。建议使用安全标识符,但这不是必需的。 -- 如果你的用例依赖于访问我们限制较少的版本,以在生命科学领域开展有益的应用,请阅读我们的 [特别访问计划](https://help.openai.com/en/articles/11826767-life-science-research-special-access-program) ,看看你是否符合条件。 +- [实施安全标识符](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers) ,用于个人用户与模型交互的产品。安全标识符是建议性的,并非必须。 +- 如果你的用例需要访问限制较少的版本,以在生命科学领域开展有益应用,请阅读我们的 [特殊访问计划](https://help.openai.com/en/articles/11826767-life-science-research-special-access-program) ,了解你是否符合条件。 -### 为单个用户实现安全标识符 +### 为各个用户实现安全标识符 -该 `safety_identifier` 参数在 [Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) 和更早的 [Chat Completions API](https://developers.openai.com/api/reference/resources/chat)。中均可用。Realtime API 通过 `OpenAI-Safety-Identifier` 请求头支持同样的概念。要使用安全标识符,请为每个请求的最终用户提供一个稳定的 ID。对用户邮箱或内部用户 ID 进行哈希处理,以避免传递任何个人信息。 +该 `safety_identifier` 参数在 [Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) 和旧版 [Chat Completions API](https://developers.openai.com/api/reference/resources/chat)。Realtime API 通过以下请求头支持相同的概念: `OpenAI-Safety-Identifier` 请求头。若要使用安全标识符,请在每次请求时为你的最终用户提供一个稳定的 ID。对用户电子邮件或内部用户 ID 进行哈希处理,以避免传递任何个人信息。 -安全标识符不会在 API 或会话之间传递。如果你的应用已经随 `safety_identifier` 和 Responses API 请求一起发送,请在创建或连接每个 Realtime 会话时单独传入相同的稳定值。 +安全标识符不会在不同的 API 或会话之间延续。如果你的应用已通过 `safety_identifier` 随 Responses API 请求一起发送,请在创建或连接每个 Realtime 会话时单独传递相同的稳定值。 @@ -33,6 +33,20 @@ Responses API Providing a safety identifier with the Responses API +```javascript +import OpenAI from "openai"; + +const client = new OpenAI(); + +const response = await client.responses.create({ + model: "gpt-5.6-terra", + input: "This is a test", + safety_identifier: "user_123456", +}); + +console.log(response.output_text); +``` + ```python from openai import OpenAI @@ -122,6 +136,20 @@ Chat Completions API Providing a safety identifier with the Chat Completions API +```javascript +import OpenAI from "openai"; + +const client = new OpenAI(); + +const response = await client.chat.completions.create({ + model: "gpt-5.6-terra", + messages: [{ role: "user", content: "This is a test" }], + safety_identifier: "user_123456", +}); + +console.log(response.choices[0].message.content); +``` + ```python from openai import OpenAI @@ -227,27 +255,27 @@ curl https://api.openai.com/v1/realtime/client_secrets \ ### 潜在后果 -如果 OpenAI 的监控系统识别出潜在的滥用行为,我们可能会采取不同级别的应对措施: +如果 OpenAI 的监控系统发现潜在的滥用行为,我们可能会采取不同程度的措施: - **延迟流式响应** - - 作为针对潜在违反策略用户的初步、后果较轻的干预措施,OpenAI 可能会在返回完整响应之前延迟流式响应,以便运行额外的检查。 - - 如果检查通过,则开始流式传输。如果检查失败,则请求停止——不会显示任何 token,流式响应也不会开始。 - - 为了提供更好的最终用户体验,建议在流式传输延迟的情况下添加加载旋转指示器。 -- **针对单个用户阻止模型访问** - - 在高置信度的策略违规情况下,相关的 `safety_identifier` 将被完全阻止访问 OpenAI 模型。 - - 该安全标识符会在所有针对相同标识符的 GPT-5 请求上收到 `identifier blocked` 错误。OpenAI 目前无法解除对单个标识符的阻止。 + - 作为针对可能违反策略的用户的初步、较低风险的干预措施,OpenAI 可能会延迟流式响应,在将完整响应返回给该用户之前运行额外的检查。 + - 如果检查通过,流式传输开始。如果检查失败,请求停止——不显示任何 token,流式响应也不会开始。 + - 为了获得更好的最终用户体验,建议在流式响应延迟时加入加载动画。 +- **阻止单个用户的模型访问** + - 在高置信度的策略违规情况下,关联的 `safety_identifier` 将被完全阻止访问 OpenAI 模型。 + - 该安全标识符会收到一个 `identifier blocked` 错误,出现在该标识符未来的所有 GPT-5 请求中。OpenAI 目前无法解除对单个标识符的阻止。 -要让这些措施生效,请确保已部署相关控制,防止被封禁的用户开设新账号。提醒一下,你的组织若反复违反政策,可能会导致整个组织失去访问权限。 +要使这些措施生效,请确保已部署相关控制,防止被封禁用户开设新账号。提醒一下,贵组织若反复违反政策,可能导致整个组织失去访问权限。 -### 我们为何要这样做 +### 我们这样做的原因 -具体的强制执行标准可能会根据不断变化的实际使用情况或新模型的发布而调整。目前,OpenAI 可能会限制或阻止具有风险性或可疑生物或化学活动的安全标识符的访问。请参阅 [博客文章](https://openai.com/index/preparing-for-future-ai-capabilities-in-biology/) 了解关于我们如何应对生物领域更高级 AI 能力的更多信息。 +具体的执行标准可能会根据不断发展的实际使用情况或新模型发布而变化。目前,OpenAI 可能会对存在风险或可疑生物或化学活动的安全标识符限制或阻止访问。详见 [博客文章](https://openai.com/index/preparing-for-future-ai-capabilities-in-biology/) ,了解我们如何在生物学领域应对更高 AI 能力的更多信息。 ## 其他类型的安全检查 -为了帮助你安全地使用 OpenAI API 和工具,我们会对我们的自有模型(包括所有微调模型)以及计算机使用工具运行安全检查。 +为了帮助确保你安全地使用 OpenAI API 和工具,我们会对我们自己的模型(包括所有微调模型)以及计算机使用工具运行安全检查。 -了解更多信息: +了解更多: - [模型评估中心](https://openai.com/safety/evaluations-hub) - [网络安全模型](https://developers.openai.com/codex/cyber-safety) diff --git a/docs/zh/api/docs/guides/streaming-responses.md b/docs/zh/api/docs/guides/streaming-responses.md index 705310a..d013354 100644 --- a/docs/zh/api/docs/guides/streaming-responses.md +++ b/docs/zh/api/docs/guides/streaming-responses.md @@ -1,15 +1,15 @@ # 流式 API 响应 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取对应文档页面的 Markdown 版本。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt). 你可以在页面 URL 末尾附加 `.md` 来获取文档页面的 Markdown 版本。 -默认情况下,当你向 OpenAI API 发起请求时,我们会在单个 HTTP 响应中先生成模型的完整输出,再将其一次性返回。在生成长输出时,等待响应可能需要较长时间。流式响应允许你在模型持续生成完整响应的同时,开始打印或处理模型输出的开头部分。 +默认情况下,当你向 OpenAI API 发起请求时,我们会先生成模型的完整输出,再通过单个 HTTP 响应一次性返回。在生成长输出时,等待响应可能需要较长时间。流式响应允许你在模型继续生成完整响应的同时,开始打印或处理模型输出开头的内容。 -本指南重点介绍基于服务端发送事件(SSE)的 HTTP 流式响应(`stream=true`)。如需通过持久 WebSocket 传输并支持增量输入,请参阅 `previous_response_id`,请参阅 [Responses API WebSocket 模式](https://developers.openai.com/api/docs/guides/websocket-mode). +本指南重点介绍基于服务端发送事件(SSE)的 HTTP 流式传输。`stream=true`)。如需使用支持通过增量输入的持久 WebSocket 传输,请参阅 `previous_response_id`,请参阅 [Responses API 的 WebSocket 模式](https://developers.openai.com/api/docs/guides/websocket-mode). ## 启用流式传输 -要开始流式响应,请在向 Responses 端点发送的请求中设置 `stream=True` : +要开始流式响应,请在向 Responses 端点发出的请求中设置 `stream=True` : ```javascript import { OpenAI } from "openai"; @@ -137,9 +137,21 @@ end ``` -Responses API 使用语义事件进行流式传输。每个事件都有一个预定义的类型,因此你可以只监听自己关心的事件。 +Responses API 使用语义事件进行流式传输。每个事件都带有预定义的类型架构,因此你可以监听你关心的事件。 -有关完整的事件类型列表,请参阅 [API 流式参考](https://developers.openai.com/api/reference/resources/responses)。以下是一些示例: +有关完整的事件类型列表,请参阅 [流式传输的 API 参考](https://developers.openai.com/api/reference/resources/responses)。以下是一些示例: + +```javascript +for await (const event of stream) { + if (event.type === "response.output_text.delta") { + process.stdout.write(event.delta); + } else if (event.type === "response.completed") { + console.log("\nResponse completed."); + } else if (event.type === "error") { + console.error(event.message); + } +} +``` ```python StreamingEvent = ( @@ -202,13 +214,13 @@ stream.each { |event| puts(event) } -## 阅读响应 +## Read the responses -如果你正在使用我们的SDK,每个事件都是一个类型化实例。你还可以使用事件的 `type` 属性来识别各个事件。 +如果你使用的是我们的 SDK,每个事件都是一个类型化实例。你也可以使用事件的 `type` 属性来识别各个事件。 -一些关键生命周期事件只会发出一次,而另一些事件在响应生成过程中会发出多次。流式传输文本时需要监听的常见事件包括: +一些关键的生命周期事件只会触发一次,而其他事件会在响应生成过程中触发多次。流式输出文本时常见的事件包括: ``` - `response.created` @@ -217,21 +229,21 @@ stream.each { |event| puts(event) } - `error` ``` -如需可监听事件的完整列表,请参阅 [API 流式参考](https://developers.openai.com/api/reference/resources/responses). +如需完整可监听的事件列表,请参阅 [流式传输的 API 参考](https://developers.openai.com/api/reference/resources/responses). -## 高级用例 +## 进阶用例 如需更高级的用例,例如流式工具调用,请参阅以下专题指南: - [流式函数调用](https://developers.openai.com/api/docs/guides/function-calling#streaming) - [流式结构化输出](https://developers.openai.com/api/docs/guides/structured-outputs#streaming) -## 内容审核风险 +## 审核风险 -请注意,在生产环境中以流式方式输出模型内容会使得审核补全内容变得更加困难,因为部分补全可能更难以评估。这可能会对已批准的使用方式产生影响。 +请注意,在生产应用中流式输出模型的补全会使审核补全内容变得更加困难,因为部分补全可能更难评估。这可能会对已批准的使用产生影响。 -如果你在生成请求中 [请求审核分数](https://developers.openai.com/api/docs/guides/moderation#moderate-generated-content),这些分数会在完整生成输出可用后才到达。它们不会包含在部分输出的增量中。 \ No newline at end of file +如果你请求 [在生成请求中同时获取审核分数](https://developers.openai.com/api/docs/guides/moderation#moderate-generated-content),这些分数会在完整生成输出可用后才返回,不会随部分输出增量一起提供。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/tools-apply-patch.md b/docs/zh/api/docs/guides/tools-apply-patch.md index a738e7b..50dddcb 100644 --- a/docs/zh/api/docs/guides/tools-apply-patch.md +++ b/docs/zh/api/docs/guides/tools-apply-patch.md @@ -1,48 +1,60 @@ # Apply Patch -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾附加 `.md` 获取。 -该 `apply_patch` tool 让 GPT-5.1 能够使用结构化差异(diff)在你的代码库中创建、更新和删除文件。模型不再仅仅建议编辑,而是发出补丁操作,由你的应用执行后再回报结果,从而支持迭代式、多步骤的代码编辑工作流。 +该 `apply_patch` tool 让 GPT-5.1 能够使用结构化差异在你的代码库中创建、更新和删除文件。模型不只是建议编辑,而是发出补丁操作,由你的应用执行后再回报结果,从而实现迭代式的多步代码编辑工作流。 -## 使用场景 +## 何时使用 -一些适合使用 apply_patch 的常见场景: +一些常见的使用 apply_patch 的场景: -- **多文件重构** – 一次性跨多个文件重命名符号、抽取辅助函数或重新组织模块。 -- **Bug 修复** – 让模型既诊断问题,又输出精确的补丁。 -- **测试与文档生成** – 在代码改动的同时新建测试文件、测试夹具和文档。 -- **迁移与机械性编辑** – 应用重复且结构化的更新(API 迁移、类型注解、格式修正等)。 +- **多文件重构** – 一次性跨多个文件重命名符号、提取辅助函数或重新组织模块。 +- **Bug 修复** – 让模型既诊断问题又生成精确的补丁。 +- **测试与文档生成** – 在代码改动的同时新建测试文件、测试数据和文档。 +- **迁移与机械性修改** – 应用重复且结构化的更新(API 迁移、类型注解、格式修正等)。 -如果你能用文字描述你的代码仓库和想要进行的修改,apply_patch 通常能生成相应的 diff。 +如果你能用自己的语言描述代码仓库和所需的更改,apply_patch 通常就能生成相应的 diff。 ## 使用 apply patch 工具与 Responses API -在高层次上,使用 `apply_patch` 与 Responses API 的交互过程如下: +从较高的层面来看,使用 `apply_patch` 与 Responses API 配合时,整体流程如下: -1. **使用 Responses API 并配合以下参数进行调用: `apply_patch` 工具** - - 向模型提供关于可用文件的上下文信息(或提供摘要),可放在你的 `input`,中,也可以为模型提供用于探索文件系统的工具。 - - 使用方法 启用该工具 `tools=[{"type": "apply_patch"}]`. +1. **调用 Responses API 并传入 `apply_patch` tool** + - 为模型提供有关可用文件(或摘要)的上下文,放在你的 `input`,中,或为模型提供用于浏览文件系统的工具。 + - 使用以下方式启用该工具 `tools=[{"type": "apply_patch"}]`. 2. **让模型返回一个或多个 patch 操作** - - Response 输出中包含一个或多个 `apply_patch_call` 对象。 - - 每次调用描述一项单一的文件操作:创建、更新或删除。 -3. **在你的环境中应用补丁** - - 运行一个补丁执行框架(patch harness)或脚本,该脚本负责: - - 解析每个 `operation` 的 diff `apply_patch_call`. - - 将补丁应用到你的工作目录或代码仓库。 - - 记录每个补丁是否成功以及任何日志或错误信息。 -4. **将补丁结果回传给模型** - - 再次调用 Responses API,使用 `previous_response_id` ,或者将会话条目传回 `input`. - - 中,并包含一个 `apply_patch_call_output` 事件,用于记录每个 `call_id`,并附带 `status` 以及可选的 `output` 字符串。 + - Response 输出包含一个或多个 `apply_patch_call` 对象。 + - 每次调用描述一次文件操作:创建、更新或删除。 +3. **在你的环境中应用 patch** + - 运行一个 patch 执行框架或脚本,用于: + - 解析每个 `operation` 对应的 diff `apply_patch_call`. + - 将 patch 应用到你的工作目录或代码仓库。 + - 记录每次 patch 是否成功以及任何日志或错误信息。 +4. **将 patch 结果回传给模型** + - 再次调用 Responses API,可以传入 `previous_response_id` ,或将你的对话项传回给 `input`. + - 为每个 `apply_patch_call_output` 事件 `call_id`,并附带一个 `status` 以及可选的 `output` 字符串。 - 保留 `tools=[{"type": "apply_patch"}]` ,以便模型在需要时可以继续编辑。 -5. **让模型继续操作或解释变更** - - 模型可能会发出更多 `apply_patch_call` 操作,或 - - 提供面向用户的人性化解释,说明它修改了什么以及为什么修改。 +5. **让模型继续或解释所做的更改** + - 模型可能会发出更多 `apply_patch_call` 操作,或者 + - 提供面向用户的解释,说明它修改了什么以及为什么修改。 ## 示例:使用 Apply Patch Tool 重命名函数 -**步骤 1:让模型进行规划并输出补丁** +**步骤 1:让模型规划并输出补丁** -让模型进行规划并输出补丁 +让模型规划并输出补丁 + +```javascript +const response = await client.responses.create({ + model: "gpt-5.6", + input: fileContext, + tools: [{ type: "apply_patch" }], +}); + +const patchCalls = response.output.filter( + (item) => item.type === "apply_patch_call" +); +``` ```python from openai import OpenAI @@ -166,10 +178,33 @@ apply_patch_call object 示例 ``` -**步骤 2:应用补丁并将结果返回** +**步骤 2:应用补丁并将结果发回** 应用补丁并返回结果 +```javascript +/** @type {import("openai/resources/responses/responses").ResponseInput} */ +const results = patchCalls.map((call) => { + const { success, output } = applyOperation(call.operation); + + return { + type: "apply_patch_call_output", + call_id: call.call_id, + status: success ? "completed" : "failed", + output, + }; +}); + +const followup = await client.responses.create({ + model: "gpt-5.6", + previous_response_id: response.id, + input: results, + tools: [{ type: "apply_patch" }], +}); + +console.log(followup.output_text); +``` + ```python from apply_patch_harness import apply_operation # your implementation @@ -270,7 +305,7 @@ puts(response.output_text) ``` -如果补丁应用失败(例如,找不到文件),请设置 `status: "failed"` 并附上具有参考价值的 `output` 字符串,以便模型进行恢复: +如果补丁应用失败(例如,找不到文件),设置 `status: "failed"` 并附上一条有帮助的 `output` 字符串,以便模型能够恢复: 报告失败的 apply_patch 调用 @@ -286,42 +321,42 @@ puts(response.output_text) ## 应用补丁操作 -| 操作类型 | 用途 | 有效负载 | +| 操作类型 | 用途 | 载荷 | | -------------- | ---------------------------------- | ---------------------------------------------------------------- | -| `create_file` | 在指定路径创建新文件,路径为 `path`. | `diff` 是一个 V4A 差异,表示完整文件内容。 | -| `update_file` | 修改指定路径的现有文件,路径为 `path`. | `diff` 是一个 V4A 差异,包含新增、删除或替换。 | -| `delete_file` | 删除指定路径的文件,路径为 `path`. | 否 `diff`;完全删除该文件。 | +| `create_file` | 在以下路径创建新文件 `path`. | `diff` 是一个 V4A diff,表示文件的完整内容。 | +| `update_file` | 修改现有文件,路径 `path`. | `diff` 是一个 V4A diff,包含新增、删除或替换操作。 | +| `delete_file` | 删除文件,路径 `path`. | 无 `diff`;完全删除该文件。 | -你的补丁工具负责解释 V4A diff 格式并应用更改。参考实现请参阅 [Python Agents SDK](https://github.com/openai/openai-agents-python/blob/main/src/agents/apply_diff.py) 或 [TypeScript Agents SDK](https://github.com/openai/openai-agents-js/blob/main/packages/agents-core/src/utils/applyDiff.ts) 代码。 +你的补丁工具负责解析 V4A diff 格式并应用更改。参考实现可参见 [Python Agents SDK](https://github.com/openai/openai-agents-python/blob/main/src/agents/apply_diff.py) 或 [TypeScript Agents SDK](https://github.com/openai/openai-agents-js/blob/main/packages/agents-core/src/utils/applyDiff.ts) 代码。 ## 实现补丁测试框架 -使用 `apply_patch` 工具时,你无需提供输入 schema,模型知道如何构造 `operation` 对象。你需要做的是: +当使用 `apply_patch` 工具时,你不需要提供输入架构;模型知道如何构造 `operation` 对象。你的工作是: 1. **从 Response 中解析操作** - - 扫描 Response 中的项 `type: "apply_patch_call"`. - - 对每个调用,检查 `operation.type`, `operation.path`,以及任何潜在的 `diff`. + - 扫描 Response 中具有以下特征的条目 `type: "apply_patch_call"`. + - 对于每个调用,检查 `operation.type`, `operation.path`,以及任何潜在的 `diff`. 2. **应用文件操作** - - 对于 `create_file` 和 `update_file`,将 V4A diff 应用到文件系统或内存工作区。 - - 对于 `delete_file`,删除位于 `path`. - - 记录每个操作是否成功以及任何日志或错误消息。 + - 对于 `create_file` 和 `update_file`,将 V4A 差异应用到文件系统或内存工作区。 + - 对于 `delete_file`,删除位于以下位置的文件 `path`. + - 记录每个操作是否成功,以及任何日志或错误消息。 3. **返回 `apply_patch_call_output` 事件** - - 对每个 `call_id`,发出恰好一个 `apply_patch_call_output` 事件,包含: - - `status: "completed"` 如果该操作已成功应用。 - - `status: "failed"` 如果你遇到错误(包含简短的、可读的 `output` 字符串)。 + - 对于每个 `call_id`,发出恰好一个 `apply_patch_call_output` 事件,其中包含: + - `status: "completed"` 如果操作已成功应用。 + - `status: "failed"` 如果你遇到错误(包含一个简短的人类可读的 `output` 字符串)。 ### 安全性与稳健性 -- **路径验证**:防止目录遍历,并将编辑限制在允许的目录内。 -- **备份**:在应用补丁前,考虑备份文件(或在临时副本中操作)。 -- **错误处理**:当补丁无法应用时,始终返回带说明性 `failed` 字符串的 `output` 状态。 -- **原子性**:确定你需要“全有或全无”的语义(任意补丁失败即回滚),还是允许逐文件成功/失败。 +- **Path validation**: 防止目录遍历,并将编辑限制在允许的目录内。 +- **Backups**: 在应用补丁前,考虑备份文件(或在临时副本中操作)。 +- **Error handling**: 始终返回一个 `failed` 状态,并附带信息性的 `output` 字符串,说明补丁无法应用的原因。 +- **Atomicity**: 决定你是需要“全有或全无”的语义(任何补丁失败即回滚),还是按文件判断成功或失败。 ## 使用 apply patch 工具配合 Agents SDK -或者,你也可以使用 [Agents SDK](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) 来使用 apply patch 工具。你仍然需要实现处理实际文件操作的执行框架,但你可以使用 `applyDiff` 函数来处理 diff 处理逻辑。 +或者,你也可以使用 [Agents SDK](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) 来使用 apply patch 工具。你仍然需要实现处理实际文件操作的脚手架,但你可以使用 `applyDiff` 函数来处理 diff 处理。 -将 apply patch 工具与 Agents SDK 结合使用 +通过 Agents SDK 使用 apply patch 工具 ```javascript import { applyDiff, Agent, run, applyPatchTool } from "@openai/agents"; @@ -454,7 +489,7 @@ if __name__ == "__main__": ## 处理常见错误 -使用 `status: "failed"` 加一条清晰的 `output` 消息来帮助模型恢复。 +使用 `status: "failed"` 加一条清晰的 `output` 消息以帮助模型恢复。 @@ -491,18 +526,18 @@ if __name__ == "__main__": -模型随后可以根据这些错误消息调整后续的差异(例如在你的提示中重新读取文件,或简化一处变更)。 +然后,模型可以根据这些错误消息调整未来的差异(例如,通过在你的提示中重新读取文件或简化更改)。 ## 最佳实践 - **提供清晰的文件上下文** - - 当你调用 Responses API 时,可以传入文件的内联快照(如示例所示),也可以为模型提供用于浏览文件系统的工具(例如 `shell` 工具)。 -- **考虑结合使用 `shell` 工具** - - 当与 `shell` 工具结合使用时,模型可以浏览文件系统目录、读取文件,并使用 grep 搜索关键字,从而实现智能体式的文件发现与编辑。 + - 当你调用 Responses API 时,可以包含文件的内联快照(如示例中所示),也可以为模型提供用于浏览文件系统的工具(例如 `shell` 工具)。 +- **考虑将其与 `shell` tool** + - 结合使用时, `shell` 工具,模型可以浏览文件系统目录、读取文件并对关键词进行 grep,从而实现智能体的文件发现与编辑。 - **鼓励小而聚焦的差异** - - 在系统指令中,引导模型进行最小化、有针对性的编辑,而不是大幅重写。 -- **确保改动能够干净地应用** - - 在一系列补丁之后,运行你的测试或 linter,并将失败信息在下次 `input` 中反馈给模型,以便其修复。 + - 在系统指令中,引导模型进行最小化、有针对性的编辑,而不是大规模重写。 +- **确保变更能够干净地应用** + - 在一系列补丁之后,运行你的测试或 linter,并将失败结果反馈到下一次 `input` 中,以便模型修复它们。 ## 使用说明 diff --git a/docs/zh/api/docs/guides/webhooks.md b/docs/zh/api/docs/guides/webhooks.md index 207f69a..306a1be 100644 --- a/docs/zh/api/docs/guides/webhooks.md +++ b/docs/zh/api/docs/guides/webhooks.md @@ -1,18 +1,22 @@ # Webhooks -> 完整的文档索引请参见 [llms.txt](/llms.txt)。可以通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取相应文档页面的 Markdown 版本。 -OpenAI [webhooks](http://chatgpt.com/?q=eli5+what+is+a+webhook?) 允许你实时接收 API 中事件的通知,例如批量任务完成、后台响应生成或微调任务结束。webhook 会按照 [Standard Webhooks 规范](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md)。投递到由你控制的 HTTP 端点。完整的 webhook 事件列表可在 [API 参考](https://developers.openai.com/api/reference/resources/webhooks). +OpenAI [webhooks](http://chatgpt.com/?q=eli5+what+is+a+webhook?) 允许你实时接收 API 中事件的通知,例如批量任务完成、后台响应生成完成或微调作业完成。Webhook 将发送到你控制的 HTTP 端点,并遵循 [Standard Webhooks 规范](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md)。完整的 webhook 事件列表可在 [API 参考](https://developers.openai.com/api/reference/resources/webhooks). -[API 参考中查看 webhook 事件 +[API webhook 事件参考 View the full list of webhook events.](https://developers.openai.com/api/reference/resources/webhooks) -以下是一些能够接收来自 OpenAI 的 webhook 的简单服务器示例,具体针对 [`response.completed`](https://developers.openai.com/api/reference/resources/webhooks) 事件。 +以下是能够接收来自 OpenAI 的 webhook 的简单服务器示例,专门针对 [`response.completed`](https://developers.openai.com/api/reference/resources/webhooks) 事件。 -webhook 服务器 +对于 Ruby 示例,使用以下命令安装所需依赖: +`gem install openai webrick`,然后设置 `OPENAI_API_KEY` 和 +`OPENAI_WEBHOOK_SECRET`. + +Webhook 服务器 ```javascript import OpenAI from "openai"; @@ -86,12 +90,63 @@ if __name__ == "__main__": app.run(port=8000) ``` +```ruby +require "openai" +require "webrick" + +client = OpenAI::Client.new( + webhook_secret: ENV.fetch("OPENAI_WEBHOOK_SECRET") +) + +server = WEBrick::HTTPServer.new( + BindAddress: "127.0.0.1", + Port: Integer(ENV.fetch("OPENAI_WEBHOOK_PORT", "8000")), + Logger: WEBrick::Log.new($stderr, WEBrick::BasicLog::WARN), + AccessLog: [] +) +response_workers = [] + +server.mount_proc("/webhook") do |request, response| + if request.request_method != "POST" + response.status = 405 + next + end + + headers = request.header.transform_values(&:first) + event = client.webhooks.unwrap(request.body, headers) + + if event.is_a?(OpenAI::Models::Webhooks::ResponseCompletedWebhookEvent) + response_workers.select!(&:alive?) + response_workers << Thread.new(event.data.id) do |response_id| + completed_response = client.responses.retrieve(response_id) + puts "Response output: #{completed_response.output_text}" + end + end + + response.status = 200 + response.body = "ok" +rescue OpenAI::Errors::InvalidWebhookSignatureError, ArgumentError => error + warn "Invalid signature: #{error.message}" + response.status = 400 + response.body = "Invalid signature" +ensure + server.shutdown if ENV["OPENAI_WEBHOOK_EXIT_AFTER_REQUEST"] == "1" +end + +Signal.trap("INT") { server.shutdown } +port = server.listeners.first.addr[1] +puts "Webhook server listening on http://127.0.0.1:#{port}/webhook" +$stdout.flush +server.start +response_workers.each(&:join) +``` + -如需查看此类 webhook 的实际效果,你可以在 OpenAI 控制台中设置一个订阅了 `response.completed`,的 webhook 端点,然后向 API 发起请求, [以后台模式生成响应](https://developers.openai.com/api/docs/guides/background). +要查看类似这样的 webhook 实际运行效果,你可以在 OpenAI 仪表板中设置一个订阅了 `response.completed`,的 webhook 端点,然后向以下接口发起 API 请求: [以后台模式生成响应](https://developers.openai.com/api/docs/guides/background). 你也可以从 [webhook 设置页面](https://platform.openai.com/settings/project/webhooks). -使用示例数据触发测试事件 +生成后台响应 ```bash curl https://api.openai.com/v1/responses \ @@ -176,6 +231,26 @@ var response = client.responses().create(params); System.out.println(response.status().orElseThrow()); ``` +```csharp +using OpenAI.Responses; +#pragma warning disable OPENAI001 + +string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!; +ResponsesClient client = new(key); + +CreateResponseOptions options = new() +{ + Model = "gpt-5.6", + BackgroundModeEnabled = true, +}; +options.InputItems.Add( + ResponseItem.CreateUserMessageItem("Write a very long novel about otters in space.") +); + +ResponseResult response = await client.CreateResponseAsync(options); +Console.WriteLine(response.Status); +``` + ```ruby require "openai" @@ -190,17 +265,17 @@ puts(response.status) ``` -在本指南中,你将学习如何在控制台中创建 webhook 端点、编写 服务端 代码来处理它们,并验证传入请求确实来自 OpenAI。 +在本指南中,你将学习如何在仪表板中创建 webhook 端点,编写 服务端 代码来处理它们,并验证传入请求确实来自 OpenAI。 -## 创建 Webhook 端点 +## 创建 webhook 端点 -若要开始在服务器上接收 webhook 请求,请登录控制台并 [打开 webhook 设置页面](https://platform.openai.com/settings/project/webhooks)。Webhook 按项目进行配置。 +要在你的服务器上开始接收 Webhook 请求,请登录仪表板并 [打开 Webhook 设置页面](https://platform.openai.com/settings/project/webhooks). Webhook 按项目进行配置。 -点击“Create”(创建)按钮以新建一个 webhook 端点。你需要配置以下三项: +单击“Create”按钮以新建一个 webhook 端点。你将配置以下三项内容: - 端点的名称(仅供你参考)。 -- 指向你所控制服务器的公共 URL。 -- 要订阅的一个或多个事件类型。当这些事件发生时,OpenAI 会向你指定的 URL 发送 HTTP POST 请求。 +- 指向你控制的服务器的公共 URL。 +- 要订阅的一个或多个事件类型。当这些事件发生时,OpenAI 将向指定的 URL 发送 HTTP POST 请求。 webhook endpoint edit dialog -创建新的 webhook 后,你将获得一个签名密钥,用于对传入的 webhook 请求进行服务端验证。请妥善保存该值,后续将无法再次查看。 +创建新的 webhook 后,你将收到一个签名密钥,用于对传入的 webhook 请求进行 服务端 验证。请妥善保存该值,因为之后将无法再次查看。 -创建好 webhook 端点后,接下来需要设置一个服务端端点来处理这些传入的事件负载。 +创建好 webhook 端点后,接下来你需要设置一个 服务端 端点来处理这些传入的事件负载。 -## 在服务器上处理 webhook 请求 +## 在服务端处理 webhook 请求 -当你订阅的事件发生时,你的 webhook URL 会收到类似下面的 HTTP POST 请求: +当你订阅的事件发生时,你的 webhook URL 将收到类似如下的 HTTP POST 请求: ``` POST https://yourserver.com/webhook @@ -232,29 +307,29 @@ webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= } ``` -你的端点应当使用一个成功的(`2xx`)状态码快速响应这些传入的 HTTP 请求,以表示已成功接收。为避免超时,我们建议将所有非简单处理卸载到后台工作进程,使端点能够立即响应。 -如果端点没有返回成功的(`2xx`)状态码,或在几秒内没有响应,webhook 请求将被重试。OpenAI 将在最长 72 小时内以指数退避持续尝试发送。请注意, `3xx` 重定向不会被跟随;它们会被视为失败,你应当更新端点以使用最终的目标 URL。 +你的端点应该使用成功的(`2xx`)状态码快速响应这些传入的 HTTP 请求,以表明已成功接收。为了避免超时,我们建议将任何非平凡的处理卸载到后台工作进程,以便端点可以立即响应。 +如果端点没有返回成功的(`2xx`)状态码,或者在几秒内没有响应,webhook 请求将被重试。OpenAI 将以指数退避方式持续尝试传递,最长持续 72 小时。请注意, `3xx` 重定向将不会被跟踪;它们会被视为失败,你的端点应更新为使用最终的目标 URL。 -在极少数情况下,由于内部系统问题,OpenAI 可能会投递同一 webhook 事件的重复副本。你可以使用 `webhook-id` 头作为幂等键来进行去重。 +在极少数情况下,由于内部系统问题,OpenAI 可能会传递同一 webhook 事件的重复副本。你可以使用 `webhook-id` 请求头作为幂等键来去重。 -### 本地测试 webhook +### 在本地测试 Webhook -测试 webhook 需要一个可在公共互联网上访问的 URL。这可能会让开发变得棘手,因为你的本地开发环境很可能未对公共开放。以下几种方式可能会对你有帮助: +测试 webhook 需要一个可在公共互联网上访问的 URL。这会让开发变得有些棘手,因为你的本地开发环境很可能并未对外公开。以下几种方案或许能帮上忙: -- [ngrok](https://ngrok.com/) 可以将你的 localhost 服务器暴露在公网 URL 上 +- [ngrok](https://ngrok.com/) 它可以将你的 localhost 服务器暴露在公网 URL 上 - 云端开发环境,例如 [Replit](https://replit.com/), [GitHub Codespaces](https://github.com/features/codespaces), [Cloudflare Workers](https://workers.cloudflare.com/),或 [v0 from Vercel](https://v0.dev/). -## 验证 webhook 签名 +## 验证 Webhook 签名 -虽然你可以在不进行任何验证的情况下接收来自 OpenAI 的 webhook 事件并处理结果,但你应当验证传入请求确实来自 OpenAI,尤其是当你的 webhook 会在后端执行任何类型的操作时。与 webhook 请求一同发送的标头中包含可与 webhook 密钥配合使用的信息,用于验证该 webhook 是否源自 OpenAI。 +虽然你可以接收来自 OpenAI 的 webhook 事件并在不进行任何验证的情况下处理结果,但你应当验证传入的请求确实来自 OpenAI,尤其是当你的 webhook 会在后端执行任何类型的操作时。随 webhook 请求一同发送的 header 包含可用于结合 webhook 密钥来验证该 webhook 是否源自 OpenAI 的信息。 -当你在 OpenAI 仪表板中创建 webhook 端点时,你将获得一个签名密钥,应当将其作为环境变量配置在你的服务器中: +当你在 OpenAI 控制台中创建 webhook 端点时,系统会为你提供一个签名密钥,你需要将其作为环境变量部署到你的服务器上: ``` export OPENAI_WEBHOOK_SECRET="" ``` -验证 webhook 签名最简单的方式是使用 `unwrap()` 官方 OpenAI SDK 帮助器中的: +验证 webhook 签名最简单的方式是使用官方 OpenAI SDK 辅助工具中的 `unwrap()` 方法: 使用 OpenAI SDK 进行签名验证 @@ -288,6 +363,47 @@ event = client.webhooks.unwrap( ) ``` +```ruby +require "openai" +require "webrick" + +client = OpenAI::Client.new( + api_key: ENV.fetch("OPENAI_API_KEY"), + webhook_secret: ENV.fetch("OPENAI_WEBHOOK_SECRET") +) +server = WEBrick::HTTPServer.new( + BindAddress: "127.0.0.1", + Port: Integer(ENV.fetch("OPENAI_WEBHOOK_PORT", "8000")), + Logger: WEBrick::Log.new($stderr, WEBrick::BasicLog::WARN), + AccessLog: [] +) + +server.mount_proc("/webhook") do |request, response| + if request.request_method != "POST" + response.status = 405 + next + end + + headers = request.header.transform_values(&:first) + event = client.webhooks.unwrap(request.body, headers) + puts "Verified webhook event: #{event.type}" + + response.status = 200 + response.body = "ok" +rescue OpenAI::Errors::InvalidWebhookSignatureError, ArgumentError + response.status = 400 + response.body = "Invalid signature" +ensure + server.shutdown if ENV["OPENAI_WEBHOOK_EXIT_AFTER_REQUEST"] == "1" +end + +Signal.trap("INT") { server.shutdown } +port = server.listeners.first.addr[1] +puts "Webhook server listening on http://127.0.0.1:#{port}/webhook" +$stdout.flush +server.start +``` + 也可以使用 [Standard Webhooks 库](https://github.com/standard-webhooks/standard-webhooks/tree/main?tab=readme-ov-file#reference-implementations): @@ -308,6 +424,6 @@ $wh->verify($webhook_payload, $webhook_headers); ``` -或者,如有需要,你可以按照 [Standard Webhooks 规范中的描述](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md#verifying-webhook-authenticity) +或者,如有需要,你也可以按照 Standard Webhooks 规范中描述的方式自行实现签名验证 [如规范所述](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md#verifying-webhook-authenticity) -如果你丢失了签名密钥或不小心将其泄露,可以通过 [轮换签名密钥](https://platform.openai.com/settings/project/webhooks). \ No newline at end of file +如果你遗失或意外泄露了签名密钥,可以通过 [轮换签名密钥](https://platform.openai.com/settings/project/webhooks). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/workload-identity-federation/oracle-cloud.md b/docs/zh/api/docs/guides/workload-identity-federation/oracle-cloud.md index 3933131..5c3f942 100644 --- a/docs/zh/api/docs/guides/workload-identity-federation/oracle-cloud.md +++ b/docs/zh/api/docs/guides/workload-identity-federation/oracle-cloud.md @@ -1,16 +1,16 @@ -# 为 Oracle 云基础设施配置工作负载身份联合 +# 为 Oracle Cloud Infrastructure 配置工作负载身份联合 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取文档页面的 Markdown 版本。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾添加 `.md` 即可获取对应页面的 Markdown 版本文档。 -使用 Oracle Cloud Infrastructure (OCI) 作为 Workload 身份提供方,将 Oracle Identity Cloud Service (IDCS) 访问令牌交换为短时效的 OpenAI 访问令牌。OCI 实例主体对同一租户内身份域的令牌交换请求进行签名。OpenAI 验证得到的令牌,并授权该 OCI 工作负载作为映射的 OpenAI 服务账号进行操作。 +使用 Oracle 云基础设施 (OCI) 作为工作负载身份提供方,通过将 Oracle Identity Cloud Service (IDCS) 访问令牌交换为短期的 OpenAI 访问令牌。OCI 实例主体对同一租户中身份域的令牌交换请求进行签名。OpenAI 验证得到的令牌,并授权该 OCI 工作负载作为映射的 OpenAI 服务账号进行操作。 -对于 Codex,使用本页面获取并检查 Oracle 令牌。然后 [配置 Codex workload identity](https://developers.openai.com/codex/enterprise/workload-identity) 将该令牌写入文件并让 Codex 指向它。本页中的服务账号映射和 SDK 示例适用于 OpenAI API。 +对于 Codex,使用此页面获取并检查 Oracle 令牌。然后 [配置 Codex 工作负载身份](https://developers.openai.com/codex/enterprise/workload-identity) 将该令牌写入文件并指向 Codex。本页面的服务账号映射和 SDK 示例适用于 OpenAI API。 -此设置不需要 OpenAI API 密钥、自定义 Oracle OAuth 资源应用,或授予自定义应用的动态组授权。 +此设置不需要 OpenAI API 密钥、自定义 Oracle OAuth 资源应用程序,或对自定义应用程序的动态组授权。 ## 设置 OCI 工作负载 -在 OCI Compute 实例上使用实例主体(instance principal)运行你的工作负载。对于 Oracle Kubernetes Engine (OKE),请确认哪个身份为请求签名:标准的实例主体签名者通常标识的是工作节点,而不是单个 Kubernetes Pod。 +使用实例主体在 OCI Compute 实例上运行你的工作负载。对于 Oracle Kubernetes Engine (OKE),请确认请求由哪个身份签名:标准的实例主体签名者通常标识的是工作节点,而不是单个 Kubernetes Pod。 签名者从 [OCI 实例元数据服务](https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/gettingmetadata.htm)。获取凭证。请验证工作负载能够访问 link-local 元数据端点: @@ -22,9 +22,9 @@ curl --fail --silent \ 工作负载还必须能够向其租户中的身份域发起出站 HTTPS 请求。元数据端点本身不需要 NAT 网关或互联网连接。 -### Request an Oracle identity token +### 请求 Oracle 身份令牌 -使用 `InstancePrincipalsSecurityTokenSigner` OCI Python SDK 向你的身份域发起 OAuth 令牌交换请求的签名: +使用 `InstancePrincipalsSecurityTokenSigner` OCI Python SDK 对发往你身份域的 OAuth 令牌交换请求进行签名: ```text POST https:///oauth2/v1/token @@ -35,11 +35,11 @@ scope=urn:opc:idm:__myscopes__ requested_token_type=urn:ietf:params:oauth:token-type:access_token ``` -该 `urn:opc:idm:__myscopes__` scope 使用实例主体的现有授权。将返回的 IDCS 访问令牌作为 subject token 用于 OpenAI 工作负载身份联合。请勿将 Oracle 令牌 audience 替换为 `https://api.openai.com/v1`;请将 OpenAI 提供方配置为使用实际 Oracle 令牌中出现的 audience。 +该 `urn:opc:idm:__myscopes__` scope 使用实例主体已有的授权。将返回的 IDCS 访问令牌用作 OpenAI 工作负载身份联合的 subject token。不要将 Oracle 令牌受众替换为 `https://api.openai.com/v1`;请将 OpenAI provider 配置为使用实际 Oracle 令牌中出现的受众。 ### 验证令牌 -Set `TOKEN` 将其设置为由实际的 OCI 工作负载生成的访问令牌,然后使用现有的本地 JWT 解码器来检查其声明: +设置 `TOKEN` 为由实际 OCI 工作负载生成的访问令牌,然后使用现有的本地 JWT 解码器检查其声明: ```python import base64 @@ -52,9 +52,9 @@ print(json.dumps(json.loads(base64.urlsafe_b64decode(payload)), indent=2)) ``` -该解码器在检查令牌时不会验证其签名。请将原始令牌视为敏感信息,不要记录它们,也不要将生产环境中的令牌粘贴到第三方 JWT 解码器中。 +解码器检查令牌时不会验证其签名。请将原始令牌视为敏感信息,不要记录它们,也不要将生产令牌粘贴到第三方 JWT 解码器中。 -一个解码后的 Oracle 访问令牌可以包含以下声明: +解码后的 Oracle 访问令牌可以包含以下声明: ```json { @@ -74,61 +74,67 @@ print(json.dumps(json.loads(base64.urlsafe_b64decode(payload)), indent=2)) } ``` -使用你自己的身份域所颁发的令牌作为可信来源。配置精确的 `iss` 值以及令牌中的一个 `aud` 值。优先使用不可变的 `ipst_instance`, `ipst_compartment`, `domain_id`,以及 `ca_ocid` 声明来对工作负载进行授权。 +使用你自己的身份域颁发的令牌作为可信来源。配置精确的 `iss` 值以及令牌中的某个 `aud` 值。优先使用不可变的 `ipst_instance`, `ipst_compartment`, `domain_id`,以及 `ca_ocid` 声明来对工作负载进行授权。 -## 配置工作负载身份联合 +## 设置工作负载身份联合 -为你的 Oracle 身份域创建一个工作负载身份提供者,然后为可使用目标 OpenAI 服务账户的 OCI 实例或 compartment 添加映射。 +为你的 Oracle 身份域创建一个工作负载身份提供商,然后为可使用目标 OpenAI 服务账户的 OCI 实例或 compartment 添加映射。 ### 设置 Workload Identity Provider -1. **创建 Workload Identity Provider。** 设置 **Name** 为唯一值,例如 `oracle-cloud-prod`。使用 **Description**,例如 `Production OCI instance principal`,以标识受信的工作负载。 +1. **创建 Workload Identity Provider。** 将 **Name** 设置为唯一值,例如 `oracle-cloud-prod`。使用 **Description**,例如 `Production OCI instance principal`,以标识受信工作负载。 -2. **设置 issuer 和 audience。** 设置 **OIDC Issuer URL** 为令牌的 `iss` claim,例如 `https://identity.oraclecloud.com/`。将 **Audience** 设置为同一令牌中某个 `aud` 值。 +2. **设置 issuer 和 audience。** 将 **OIDC Issuer URL** 为令牌中的 `iss` claim,例如 `https://identity.oraclecloud.com/`。将 **Audience** 设置为同一令牌中的某个 `aud` 值。 -3. **在可用时配置租户专用的 OIDC 发现。** 如果 **Use custom URL for OIDC discovery** 出现在 **Advanced**,启用它。将 **Custom OIDC discovery URL** 设置为你的租户特定身份域,例如 `https://idcs-example.identity.oraclecloud.com`。OpenAI 会获取 `https://idcs-example.identity.oraclecloud.com/.well-known/openid-configuration`,然后使用发现文档的 `jwks_uri` 来获取该租户的公钥签名密钥。如果没有显示自定义发现选项,请启用 **Use uploaded JWKS for token verification** 并从 `https:///admin/v1/SigningCert/jwk` 上传公钥 JWKS。 +3. **在可用时配置租户专用的 OIDC 发现。** 如果 **Use custom URL for OIDC discovery** 出现在 **高级**,将其启用。将 **自定义 OIDC 发现 URL** 设置为你的租户专属身份域,例如 `https://idcs-example.identity.oraclecloud.com`。OpenAI 会获取 `https://idcs-example.identity.oraclecloud.com/.well-known/openid-configuration`,然后使用发现文档中的 `jwks_uri` 来检索该租户的公钥签名密钥。如果未显示自定义发现选项,请启用 **使用已上传的 JWKS 进行令牌验证** ,并上传来自 `https:///admin/v1/SigningCert/jwk` 的公钥 JWKS。 -4. **仅当需要派生属性时,才添加属性转换。** 你可以在服务账号映射断言中直接使用原始 Oracle 声明,例如 `ipst_instance`, `ipst_compartment`, `domain_id`,和 `ca_ocid` 。对于显式派生的实例属性,请输入 `instance` 并附带表达式 `assertion.ipst_instance` 以创建 `openai.instance`. +4. **仅当需要派生属性时,才添加属性转换。** 你可以在服务账号映射断言中直接使用原始的 Oracle 声明,例如 `ipst_instance`, `ipst_compartment`, `domain_id`,以及 `ca_ocid` 。对于显式派生的实例属性,请输入 `instance` ,并使用表达式 `assertion.ipst_instance` 来创建 `openai.instance`. -Oracle 的 [OpenID Connect 发现参考](https://docs.oracle.com/en/cloud/paas/identity-cloud/idcsa/op-well-known-openid-configuration-get.html) 说明了为何自定义发现很重要:发现文档可以声明全局颁发者 `https://identity.oraclecloud.com/` 同时发布令牌端点和 `jwks_uri` 在租户专属身份域上。在 **OIDC Issuer URL** 中保留全局颁发者,并使用租户域作为 **Custom OIDC discovery URL**. +Oracle 的 [OpenID Connect 发现参考](https://docs.oracle.com/en/cloud/paas/identity-cloud/idcsa/op-well-known-openid-configuration-get.html) 说明了为何自定义发现很重要:发现文档可以声明全局颁发者 `https://identity.oraclecloud.com/` 同时将 token 端点和 `jwks_uri` 发布在租户专属身份域上。请在 **OIDC Issuer URL** 中保留全局颁发者,并将租户域用于 **Custom OIDC discovery URL**. -如果你的身份域在令牌颁发者处发布发现元数据, - 请保持自定义发现禁用,并使用标准 OIDC 发现。如果 OpenAI +如果你的身份域在 token 颁发者处发布发现元数据, + 则保持自定义发现处于关闭状态并使用标准 OIDC 发现。如果 OpenAI 无法访问租户发现文档或签名密钥端点,请禁用 - 自定义发现,并启用 **Use uploaded JWKS for token verification**,以及 - 从以下位置上传租户的公共 JWKS: - `https:///admin/v1/SigningCert/jwk`。自定义发现与 + 自定义发现,启用 **Use uploaded JWKS for token verification**,以及 + 并从 + `https:///admin/v1/SigningCert/jwk`。上传该租户的公共 JWKS。自定义发现和 上传的 JWKS 不能同时启用。当 - Oracle 轮换其签名证书时,请更新上传的密钥。 + Oracle 轮换其签名证书时,请更新已上传的密钥。 -### 设置服务账号映射 +### 配置服务账号映射 -1. **创建服务账户映射。** 设置 **Name** 为唯一值,例如 `oracle-instance-prod`,并添加用于标识可信 OCI 工作负载的描述。 +1. **创建一个服务账户映射。** 将 **Name** 设置为唯一值,例如 `oracle-instance-prod`,并添加可识别受信 OCI 工作负载的描述。 -2. **匹配最窄且稳定的 OCI 身份。** 若要授予对单个实例的访问权限,请将 **Key** 设置为 `ipst_instance` ,并将 **Value** 设置为已验证令牌中的确切实例 OCID。若要授予对同一 compartment 内多个实例的访问权限,请将 **Key** 设置为 `ipst_compartment` ,并将 **Value** 设置为确切的 compartment OCID。 +2. **匹配最窄范围的稳定 OCI 标识。** 若要向单个实例授予访问权限,请将 **Key** 设置为 `ipst_instance` ,将 **Value** 设置为已验证令牌中的精确实例 OCID。若要向同一 compartment 内的多个实例授予访问权限,请将 **Key** 设置为 `ipst_compartment` ,将 **Value** 设置为精确的 compartment OCID。 -3. **根据需要添加 domain 和 tenancy 边界。** 添加进一步的映射行,针对 `domain_id` 或 `ca_ocid` 以将工作负载限制为特定的 Oracle 身份 domain 或 tenancy。添加 `sub_type` ,其值为 `instance` ,当令牌包含该声明并且你希望要求使用实例主体时使用。所有映射行都必须匹配。 +3. **根据需要添加域和租户边界。** 添加更多映射行以限定 `domain_id` 或 `ca_ocid` ,从而将工作负载限制为特定的 Oracle 身份域或租户。当令牌包含相应声明且你希望要求使用实例主体时,请添加 `sub_type` ,其值为 `instance` 。所有映射行都必须匹配。 -4. **选择 OpenAI 目标。** 设置 **Project** 为拥有该服务账户的项目,然后选择 **Service account** 以便受信任的 OCI 工作负载可以使用。 +4. **选择 OpenAI 目标。** 将 **Project** 为拥有该服务账户的项目,然后选择 **Service account** 以供受信任的 OCI 工作负载使用。 -5. **根据需要收窄 API 权限。** 仅选择 **Permissions** 工作负载所需的权限。映射权限可以限制所选服务账号,但无法授予该服务账号原本没有的权限。 +5. **如需要,可收窄 API 权限。** 仅选择 **Permissions** 工作负载所需的权限。映射权限可以限制所选的服务账号,但无法授予该服务账号原本不具备的权限。 -使用标准实例主体签名者的 OKE 工作负载会继承 +一个使用标准实例主体签名者的 OKE 工作负载会继承 工作节点的身份。实例级映射授权的是该节点,而 - 不是单个 Pod。当你在共享同一工作节点的 Pod 之间需要隔离时, - 请使用更具体的、受支持的 OCI 工作负载身份。 + 不仅仅是单个 Pod。当你需要在共享工作节点的 Pod 之间进行隔离时,请 + 使用更具体的、受支持的 OCI 工作负载身份。 ## 在代码中使用该 token -安装 OpenAI、OCI 和 Requests Python 包: +安装 OpenAI、OCI 和 Requests 的 Python 包: ```bash pip install openai oci requests ``` -Set `OCI_IDENTITY_DOMAIN_URL` 设置为同一租户中工作负载所在身份域的基础 URL。 `OPENAI_IDENTITY_PROVIDER_ID` 将 `OPENAI_SERVICE_ACCOUNT_ID` 设置为 OpenAI 提供方和服务账户映射中的 ID。 +对于 Ruby,安装 OpenAI 和 OCI gem: -以下示例使用 OCI 实例主体对 Oracle 令牌交换请求进行签名,将 IDCS 访问令牌返回给 OpenAI SDK,并允许该 SDK 在需要时将其交换为短期有效的 OpenAI 访问令牌: +```bash +gem install openai oci +``` + +设置 `OCI_IDENTITY_DOMAIN_URL` 为同一租户中与工作负载相同的身份域的基础 URL。设置 `OPENAI_IDENTITY_PROVIDER_ID` 和 `OPENAI_SERVICE_ACCOUNT_ID` 为来自你的 OpenAI 提供方和服务账户映射的 ID。 + +以下示例使用 OCI 实例主体对 Oracle 令牌交换请求进行签名,将 IDCS 访问令牌返回给 OpenAI SDK,并让 SDK 在需要时将其交换为短期 OpenAI 访问令牌: 使用 OCI 实例主体进行身份验证 @@ -188,15 +194,123 @@ response = client.responses.create( print(response.output_text) ``` +```ruby +require "json" +require "net/http" +require "oci" +require "openai" +require "uri" + +class OracleInstancePrincipalTokenProvider + include OpenAI::Auth::SubjectTokenProvider + + def initialize(identity_domain_url:) + @identity_domain_url = identity_domain_url.sub(%r{/+\z}, "") + end + + def token_type + OpenAI::Auth::TokenType::JWT + end + + def get_token + uri = URI("#{@identity_domain_url}/oauth2/v1/token") + unless uri.is_a?(URI::HTTPS) + raise OpenAI::Errors::SubjectTokenProviderError.new( + message: "Oracle identity domain URL must use HTTPS", + provider: "oracle-instance-principal" + ) + end + + body = URI.encode_www_form( + grant_type: "urn:ietf:params:oauth:grant-type:token-exchange", + scope: "urn:opc:idm:__myscopes__", + requested_token_type: "urn:ietf:params:oauth:token-type:access_token" + ) + headers = { + "content-type": "application/x-www-form-urlencoded;charset=utf-8" + } + + signer = OCI::Auth::Signers::InstancePrincipalsSecurityTokenSigner.new + signer.sign(:post, uri.to_s, headers, body) + + request = Net::HTTP::Post.new(uri) + headers.each { |name, value| request[name.to_s] = value } + request.body = body + + response = Net::HTTP.start( + uri.hostname, + uri.port, + use_ssl: true, + open_timeout: 10, + read_timeout: 30 + ) do |http| + http.request(request) + end + + unless response.is_a?(Net::HTTPSuccess) + raise OpenAI::Errors::SubjectTokenProviderError.new( + message: "Oracle identity token request failed with status #{response.code}", + provider: "oracle-instance-principal" + ) + end + + token = JSON.parse(response.body).fetch("access_token") + unless token.is_a?(String) && !token.empty? + raise OpenAI::Errors::SubjectTokenProviderError.new( + message: "Oracle identity domain did not return an access token", + provider: "oracle-instance-principal" + ) + end + + token + rescue JSON::ParserError + raise OpenAI::Errors::SubjectTokenProviderError.new( + message: "Oracle identity token response was not valid JSON", + provider: "oracle-instance-principal" + ), cause: nil + rescue KeyError + raise OpenAI::Errors::SubjectTokenProviderError.new( + message: "Oracle identity domain did not return an access token", + provider: "oracle-instance-principal" + ), cause: nil + rescue SystemCallError, Timeout::Error => error + raise OpenAI::Errors::SubjectTokenProviderError.new( + message: "Failed to request Oracle identity token: #{error.message}", + provider: "oracle-instance-principal", + cause: error + ) + end +end + +provider = OracleInstancePrincipalTokenProvider.new( + identity_domain_url: ENV.fetch("OCI_IDENTITY_DOMAIN_URL") +) + +workload_identity = OpenAI::Auth::WorkloadIdentity.new( + identity_provider_id: ENV.fetch("OPENAI_IDENTITY_PROVIDER_ID"), + service_account_id: ENV.fetch("OPENAI_SERVICE_ACCOUNT_ID"), + provider: provider +) + +client = OpenAI::Client.new(workload_identity: workload_identity) + +response = client.responses.create( + model: "gpt-5.6-terra", + input: "Say hello from Oracle Cloud Infrastructure workload identity federation." +) + +puts(response.output_text) +``` + -当 OpenAI SDK 需要续期工作负载身份凭据时,主体令牌提供方会请求一个新的 Oracle 令牌。切勿打印或持久化 Oracle 主体令牌以及由此获得的 OpenAI 访问令牌。 +当 OpenAI SDK 需要续期工作负载身份凭证时,主体令牌提供方会请求一个新的 Oracle 令牌。切勿打印或持久化 Oracle 主体令牌以及最终的 OpenAI 访问令牌。 ## OCI 安全建议 -- 映射一个实例,使用 `ipst_instance` 当只有一个工作负载应具有访问权限时。 -- 使用 `ipst_compartment` 仅在该隔间中的每个符合条件的实例都应共享该映射时。 -- 添加 `domain_id` 或 `ca_ocid` 以强制实施身份域和租户边界。 -- 为每个应用程序和环境使用一个独立的 OpenAI 服务账户。 -- 在依赖 Pod 级别隔离之前,请验证 OKE 令牌是否代表工作节点。 -- 使用已签发的 Oracle 令牌中存在的受众,而不是假设一个 OpenAI 特定的受众。 +- 使用 `ipst_instance` 当只有一个工作负载应该拥有访问权限时。 +- 使用 `ipst_compartment` 仅当该隔离舱中每个符合条件的实例都应共享该映射时。 +- 添加 `domain_id` 或 `ca_ocid` 以强制执行身份域和租户边界。 +- 为每个应用程序和环境使用一个独立的 OpenAI 服务账号。 +- 在依赖 Pod 级隔离之前,请验证 OKE 令牌是否代表工作节点。 +- 使用已颁发的 Oracle 令牌中存在的 audience,而不是假定为 OpenAI 特定的 audience。 - 如果你的身份域无法使用 OIDC 发现,请在 Oracle 轮换其签名密钥时轮换已上传的公钥。 \ No newline at end of file diff --git a/docs/zh/api/docs/libraries.md b/docs/zh/api/docs/libraries.md index c857c0a..c668978 100644 --- a/docs/zh/api/docs/libraries.md +++ b/docs/zh/api/docs/libraries.md @@ -1,12 +1,12 @@ -# SDK 与 CLI +# SDK 和 CLI -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取对应文档页面的 Markdown 版本。 -本页介绍使用 [OpenAI API](https://developers.openai.com/api/reference/overview):进行开发的主要方式:用于应用程序代码的官方 SDK、用于 shell 原生工作流的 OpenAI CLI、用于编排的 Agents SDK,或你常用的任意 HTTP 客户端。 +本页介绍构建应用的几种主要方式: [OpenAI API](https://developers.openai.com/api/reference/overview):用于应用代码的官方 SDK、用于 shell 原生工作流的 OpenAI CLI、用于编排的 Agents SDK,或你惯用的任意 HTTP 客户端。 ## 创建并导出 API 密钥 -开始之前, [在控制台中创建一个 API 密钥](https://platform.openai.com/api-keys),你将使用该密钥安全地 [访问 API](https://developers.openai.com/api/reference/overview)。请将此密钥保存在安全的位置,例如计算机上的 [`.zshrc` 文件](https://www.freecodecamp.org/news/how-do-zsh-configuration-files-work/) 或其他文本文件。生成 API 密钥后,请将其导出为终端中的 [环境变量](https://en.wikipedia.org/wiki/Environment_variable) 。 +开始之前, [在控制台中创建一个 API 密钥](https://platform.openai.com/api-keys),你可以用它来 [访问 API](https://developers.openai.com/api/reference/overview)。将该密钥保存在安全的位置,例如计算机上的一个 [`.zshrc` 文件](https://www.freecodecamp.org/news/how-do-zsh-configuration-files-work/) 或其他文本文件。生成 API 密钥后,将其导出为终端中的 [环境变量](https://en.wikipedia.org/wiki/Environment_variable) 。 @@ -33,7 +33,7 @@ setx OPENAI_API_KEY "your_api_key_here" -OpenAI SDK 已配置为自动从系统环境中读取你的 API 密钥。 +OpenAI SDK 默认配置为自动从系统环境中读取你的 API 密钥。 ## 安装官方 SDK @@ -43,7 +43,7 @@ JavaScript -要在 Node.js、Deno 或 Bun 等服务端 JavaScript 环境中使用 OpenAI API,你可以使用官方的 [OpenAI SDK for TypeScript and JavaScript](https://github.com/openai/openai-node)。使用以下命令安装 SDK 开始使用 [npm](https://www.npmjs.com/) 或你常用的包管理器: +要在 Node.js、Deno 或 Bun 等 服务端 JavaScript 环境中使用 OpenAI API,你可以使用官方的 [OpenAI SDK for TypeScript and JavaScript](https://github.com/openai/openai-node)。首先使用 [npm](https://www.npmjs.com/) 或你常用的包管理器安装 SDK: 使用 npm 安装 OpenAI SDK @@ -52,9 +52,9 @@ npm install openai ``` -安装 OpenAI SDK 后,创建一个名为 `example.mjs` 的文件,并将示例代码复制到其中: +安装好 OpenAI SDK 后,创建一个文件, `example.mjs` 并将示例代码复制到其中: -测试一个基本的 API 请求 +测试基本的 API 请求 ```javascript import OpenAI from "openai"; @@ -69,9 +69,9 @@ console.log(response.output_text); ``` -使用以下命令执行代码 `node example.mjs` (或 Deno、Bun 中对应的命令)。稍等片刻,你应该会看到你的 API 请求输出。 +使用 `node example.mjs` (或 Deno、Bun 中对应的命令)执行代码。稍等片刻,你应该会看到 API 请求的输出。 -[在 GitHub 上了解更多 +[在 GitHub 上了解更多信息 @@ -87,7 +87,7 @@ Python -要在 Python 中使用 OpenAI API,你可以使用官方的 [OpenAI SDK for Python](https://github.com/openai/openai-python)。使用以下命令安装 SDK 开始使用 [pip](https://pypi.org/project/pip/): +要在 Python 中使用 OpenAI API,你可以使用官方的 [OpenAI SDK for Python](https://github.com/openai/openai-python)。首先使用 [pip](https://pypi.org/project/pip/): 使用 pip 安装 OpenAI SDK @@ -96,9 +96,9 @@ pip install openai ``` -安装 OpenAI SDK 后,创建一个名为 `example.py` 的文件,并将示例代码复制到其中: +安装好 OpenAI SDK 后,创建一个文件, `example.py` 并将示例代码复制到其中: -测试一个基本的 API 请求 +测试基本的 API 请求 ```python from openai import OpenAI @@ -114,9 +114,9 @@ print(response.output_text) ``` -使用以下命令执行代码 `python example.py`。稍等片刻,你应该会看到你的 API 请求输出。 +使用 `python example.py`。稍等片刻,你应该会看到 API 请求的输出。 -[在 GitHub 上了解更多 +[在 GitHub 上了解更多信息 @@ -132,15 +132,15 @@ print(response.output_text) -该公司 与 Microsoft 合作,为 C# 提供官方支持的 OpenAI API 客户端。你可以使用 .NET CLI 从 [NuGet](https://www.nuget.org/). +该公司 与微软合作,提供了一个官方支持的 C# OpenAI API 客户端。你可以使用以下命令通过 .NET CLI 安装它: [NuGet](https://www.nuget.org/). ``` dotnet add package OpenAI ``` -向 Responses API 发出的一个简单 API 请求 [响应接口](https://developers.openai.com/api/reference/resources/responses) 如下所示: +向API 发起的简单请求示例如下: [Responses API](https://developers.openai.com/api/reference/resources/responses) 代码如下: -测试一个基本的 API 请求 +测试基本的 API 请求 ```csharp using OpenAI.Responses; @@ -173,14 +173,14 @@ OpenAI 为 Java 编程语言提供了一个 API 帮助库,目前处于 beta com.openai openai-java - 4.52.0 + 4.54.0 ``` -使用 API 向 [响应接口](https://developers.openai.com/api/reference/resources/responses) 如下所示: +向API 发起的简单请求示例如下: [Responses API](https://developers.openai.com/api/reference/resources/responses) 代码如下: -测试一个基本的 API 请求 +测试基本的 API 请求 ```java import com.openai.client.OpenAIClient; @@ -206,9 +206,9 @@ public class Main { ``` -要了解更多关于在 Java 中使用 OpenAI API 的信息,请查看下方链接的 GitHub 仓库! +要进一步了解如何在 Java 中使用 OpenAI API,请查看下方链接的 GitHub 仓库! -[在 GitHub 上了解更多 +[在 GitHub 上了解更多信息 @@ -224,7 +224,7 @@ Go -OpenAI 为 Go 编程语言提供了一个 API 帮助库,目前处于 beta 阶段。你可以使用以下代码导入该库: +OpenAI 为 Go 编程语言提供了一个 API 帮助库,目前处于 beta 阶段。你可以使用下面的代码导入该库: ```go import ( @@ -233,9 +233,9 @@ import ( ``` -向 API 发出的第一个请求可以访问 [响应接口](https://developers.openai.com/api/reference/resources/responses) 如下所示: +向API 发起的首个请求示例如下: [Responses API](https://developers.openai.com/api/reference/resources/responses) 代码如下: -测试一个基本的 API 请求 +测试基本的 API 请求 ```go package main @@ -264,9 +264,9 @@ func main() { ``` -要了解更多关于在 Go 中使用 OpenAI API 的信息,请查看下方链接的 GitHub 仓库! +要进一步了解如何在 Go 中使用 OpenAI API,请查看下方链接的 GitHub 仓库! -[在 GitHub 上了解更多 +[在 GitHub 上了解更多信息 @@ -282,7 +282,7 @@ Ruby -要在 Ruby 中使用 OpenAI API,你可以使用官方的 [Ruby 版官方 OpenAI SDK](https://github.com/openai/openai-ruby)。首先将该 gem 添加到你的应用中: +要在 Ruby 中使用 OpenAI API,你可以使用官方的 [OpenAI Ruby SDK](https://github.com/openai/openai-ruby)。首先将 gem 添加到你的应用中: 使用 Bundler 安装 OpenAI SDK @@ -291,9 +291,9 @@ gem "openai" ``` -安装 OpenAI SDK 后,创建一个名为 `example.rb` 的文件,并将示例代码复制到其中: +安装好 OpenAI SDK 后,创建一个文件, `example.rb` 并将示例代码复制到其中: -测试一个基本的 API 请求 +测试基本的 API 请求 ```ruby require "openai" @@ -309,9 +309,9 @@ puts(response.output_text) ``` -使用以下命令执行代码 `ruby example.rb`。稍等片刻,你应该会看到你的 API 请求输出。 +使用 `ruby example.rb`。稍等片刻,你应该会看到 API 请求的输出。 -[在 GitHub 上了解更多 +[在 GitHub 上了解更多信息 @@ -336,9 +336,9 @@ brew install openai/tools/openai ``` -然后在 shell 中运行一个基本的 API 请求: +然后在你的 shell 中运行一个基本的 API 请求: -测试一个基本的 API 请求 +测试基本的 API 请求 ```bash openai responses create \ @@ -349,7 +349,7 @@ openai responses create \ ``` -使用 CLI 执行可重复的终端工作流,例如从文件中提取结构化数据、生成图像、创建语音,以及使用以下 shell 工具组合 API 调用 `jq`. +使用 CLI 完成可重复的终端工作流,例如从文件中提取结构化数据、生成图像、合成语音,以及使用 shell 工具组合 API 调用,例如 `jq`. [OpenAI CLI 指南 @@ -361,11 +361,11 @@ openai responses create \ ## 使用 Agents SDK -直接 OpenAI 请求请使用上方的官方 SDK API。当你的应用需要对Agents SDK进行 -智能体、工具、 -交接、护栏、追踪或沙箱执行等代码优先的编排时,请使用 智能体开发工具包。 +使用上面的官方 OpenAI SDK 直接发起 API 请求。当你的应用需要以代码为先的编排时,使用 Agents SDK +用于 智能体、工具、 +交接、护栏、追踪或沙箱执行。 -如果你在直接 API 请求和代码优先编排之间犹豫, +如果你正在决定是采用直接 API 请求还是以代码为先的编排, 请参阅 [Responses API 与 Agents SDK 的对比](https://developers.openai.com/api/docs/guides/agents#agents-sdk-vs-responses-api). [Agents SDK 快速入门 @@ -379,72 +379,72 @@ openai responses create \ ## Azure OpenAI 库 -Microsoft 的 Azure 团队维护着与 OpenAI API 和 Azure OpenAI 服务兼容的库。请阅读下面的库文档,了解如何将它们与 OpenAI API 一起使用。 +Microsoft 的 Azure 团队维护着与 OpenAI API 以及 Azure OpenAI 服务兼容的库。请阅读下面的库文档,了解如何将其与 OpenAI API 配合使用。 -- [适用于 .NET 的 Azure OpenAI 客户端库](https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/openai/Azure.AI.OpenAI) -- [适用于 JavaScript 的 Azure OpenAI 客户端库](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/openai/openai) -- [适用于 Java 的 Azure OpenAI 客户端库](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/openai/azure-ai-openai) -- [适用于 Go 的 Azure OpenAI 客户端库](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/ai/azopenai) +- [Azure OpenAI .NET 客户端库](https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/openai/Azure.AI.OpenAI) +- [Azure OpenAI JavaScript 客户端库](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/openai/openai) +- [Azure OpenAI Java 客户端库](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/openai/azure-ai-openai) +- [Azure OpenAI Go 客户端库](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/ai/azopenai) --- ## 社区库 -以下这些库由更广泛的开发者社区构建和维护。你还可以 [在 GitHub 上关注我们的 OpenAPI 规范仓库](https://github.com/openai/openai-openapi) ,以便及时了解我们对 API 所做的更改。 +下面的库由更广泛的开发者社区构建和维护。你也可以 [查看我们在 GitHub 上的 OpenAPI 规范](https://github.com/openai/openai-openapi) 仓库,及时了解我们对 API 所做更改的更新。 -请注意,OpenAI 不会验证这些项目的正确性或安全性。 **使用它们需自行承担风险!** +请注意,OpenAI 不会验证这些项目的正确性或安全性。 **使用时请自行承担风险!** ### Clojure -- [openai-clojure](https://github.com/wkok/openai-clojure) 由 [wkok](https://github.com/wkok) +- [openai-clojure](https://github.com/wkok/openai-clojure) 作者 [wkok](https://github.com/wkok) ### Dart/Flutter -- [openai](https://github.com/anasfik/openai) 由 [anasfik](https://github.com/anasfik) +- [openai](https://github.com/anasfik/openai) 作者 [anasfik](https://github.com/anasfik) ### Delphi -- [DelphiOpenAI](https://github.com/HemulGM/DelphiOpenAI) 由 [HemulGM](https://github.com/HemulGM) +- [DelphiOpenAI](https://github.com/HemulGM/DelphiOpenAI) 作者 [HemulGM](https://github.com/HemulGM) ### Elixir -- [openai.ex](https://github.com/mgallo/openai.ex) 由 [mgallo](https://github.com/mgallo) +- [openai.ex](https://github.com/mgallo/openai.ex) 作者 [mgallo](https://github.com/mgallo) ### Kotlin -- [openai-kotlin](https://github.com/Aallam/openai-kotlin) 由 [Mouaad Aallam](https://github.com/Aallam) +- [openai-kotlin](https://github.com/Aallam/openai-kotlin) 作者 [Mouaad Aallam](https://github.com/Aallam) ### PHP -- [orhanerday/open-ai](https://packagist.org/packages/orhanerday/open-ai) 由 [orhanerday](https://github.com/orhanerday) -- [openai-php client](https://github.com/openai-php/client) 由 [openai-php](https://github.com/openai-php) +- [orhanerday/open-ai](https://packagist.org/packages/orhanerday/open-ai) 作者 [orhanerday](https://github.com/orhanerday) +- [openai-php client](https://github.com/openai-php/client) 作者 [openai-php](https://github.com/openai-php) ### Rust -- [async-openai](https://github.com/64bit/async-openai) 由 [64bit](https://github.com/64bit) +- [async-openai](https://github.com/64bit/async-openai) 作者 [64bit](https://github.com/64bit) ### Scala -- [openai-scala-client](https://github.com/cequence-io/openai-scala-client) 由 [cequence-io](https://github.com/cequence-io) +- [openai-scala-client](https://github.com/cequence-io/openai-scala-client) 作者 [cequence-io](https://github.com/cequence-io) ### Swift -- [AIProxySwift](https://github.com/lzell/AIProxySwift) 由 [Lou Zell](https://github.com/lzell) -- [OpenAIKit](https://github.com/dylanshine/openai-kit) 由 [dylanshine](https://github.com/dylanshine) -- [OpenAI](https://github.com/MacPaw/OpenAI/) 由 [MacPaw](https://github.com/MacPaw) +- [AIProxySwift](https://github.com/lzell/AIProxySwift) 作者 [Lou Zell](https://github.com/lzell) +- [OpenAIKit](https://github.com/dylanshine/openai-kit) 作者 [dylanshine](https://github.com/dylanshine) +- [OpenAI](https://github.com/MacPaw/OpenAI/) 作者 [MacPaw](https://github.com/MacPaw) ### Unity -- [com.openai.unity](https://github.com/RageAgainstThePixel/com.openai.unity) 由 [RageAgainstThePixel](https://github.com/RageAgainstThePixel) +- [com.openai.unity](https://github.com/RageAgainstThePixel/com.openai.unity) 作者 [RageAgainstThePixel](https://github.com/RageAgainstThePixel) ### Unreal Engine -- [OpenAI-Api-Unreal](https://github.com/KellanM/OpenAI-Api-Unreal) 由 [KellanM](https://github.com/KellanM) +- [OpenAI-Api-Unreal](https://github.com/KellanM/OpenAI-Api-Unreal) 作者 [KellanM](https://github.com/KellanM) ## 其他 OpenAI 仓库 -- [tiktoken](https://github.com/openai/tiktoken) - 计算 token 数 -- [simple-evals](https://github.com/openai/simple-evals) - 简易评估库 +- [tiktoken](https://github.com/openai/tiktoken) - 计算 token +- [simple-evals](https://github.com/openai/simple-evals) - 简单评估库 - [mle-bench](https://github.com/openai/mle-bench) - 用于评估机器学习工程师智能体的库 - [gym](https://github.com/openai/gym) - 强化学习库 -- [swarm](https://github.com/openai/swarm) - 教学用编排代码仓库 \ No newline at end of file +- [swarm](https://github.com/openai/swarm) - 教学编排代码仓库 \ No newline at end of file diff --git a/docs/zh/api/docs/models.md b/docs/zh/api/docs/models.md index ccfccb6..41e8b0a 100644 --- a/docs/zh/api/docs/models.md +++ b/docs/zh/api/docs/models.md @@ -1,118 +1,118 @@ # 模型 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取 Markdown 版本的文档页面。 -> 浏览 OpenAI API 上提供的模型。 +> 探索 OpenAI API 上可用的模型。 -如果你不确定从何处开始,请使用 [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol),这是我们在复杂推理和编码方面的旗舰模型。选择 [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra) 可在智能水平和成本之间取得平衡,或者选择 [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna) 用于对成本敏感、高吞吐量工作负载的场景。 +如果你不确定从何入手,可以使用 [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol),这是我们在复杂推理和编码方面的旗舰模型。选择 [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra) 可以在智能与成本之间取得平衡,或者选择 [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna) 用于成本敏感的高吞吐量工作负载。 -所有最新的 OpenAI 模型都支持文本和图像输入、文本输出、多语言能力和视觉理解。可通过 [Responses API](/api/reference/resources/responses/methods/create) 和我们的 [客户端 SDK](/api/docs/libraries). +所有最新的 OpenAI 模型都支持文本和图像输入、文本输出、多语言能力和视觉理解。可通过 [Responses API](/api/reference/resources/responses/methods/create) 以及我们的 [客户端 SDK](/api/docs/libraries). -## 推荐模型 +## Recommended models -- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md): 从这里开始处理复杂的推理和编码任务。 -- [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md): 在智能与成本之间取得平衡。 -- [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna.md): 优化对成本敏感的高吞吐量工作负载。 +- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md):从这里开始,处理复杂的推理和编码任务。 +- [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md):在智能与成本之间取得平衡。 +- [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna.md):针对高吞吐量、对成本敏感的工作负载进行优化。 ## 浏览我们的完整模型目录 -面向多种任务的多样化模型 +面向各类任务的多样化模型 -了解 [该公司 OpenAI使用你的数据](/api/docs/guides/your-data.md) 并查看 [已弃用模型](/api/docs/deprecations.md). +查看 [OpenAI 如何使用你的数据](/api/docs/guides/your-data.md) 并查看 [已弃用的模型](/api/docs/deprecations.md). -- [babbage-002](/api/docs/models/babbage-002.md):GPT-3 ada 和 babbage 基础模型的替代品 -- [Chat Latest](/api/docs/models/chat-latest.md):ChatGPT 中使用的最新 Instant 模型 -- [ChatGPT-4o](/api/docs/models/chatgpt-4o-latest.md):在 ChatGPT 中使用的 GPT-4o 模型 -- [chatgpt-image-latest](/api/docs/models/chatgpt-image-latest.md):此前在 ChatGPT 中使用的图像模型。 -- [codex-mini-latest](/api/docs/models/codex-mini-latest.md):为 Codex CLI 优化的快速推理模型 -- [computer-use-preview](/api/docs/models/computer-use-preview.md):用于 computer use 工具的专用模型 -- [davinci-002](/api/docs/models/davinci-002.md):GPT-3 curie 和 davinci 基础模型的替代品 -- [Daybreak Blue](/api/docs/models/daybreak-blue-latest.md):用于防御性网络安全工作的前沿通用模型别名,附带相关安全保障。 -- [Daybreak Red](/api/docs/models/daybreak-red-latest.md):用于经授权的漏洞研究和安全测试的进阶网络安全模型别名。 -- [GPT-3.5 Turbo](/api/docs/models/gpt-3.5-turbo.md):面向更低成本的聊天和非聊天任务的旧版 GPT 模型 -- [GPT-4](/api/docs/models/gpt-4.md): 早期的高智能 GPT 模型 -- [GPT-4 Turbo](/api/docs/models/gpt-4-turbo.md): 早期的高智能 GPT 模型 -- [GPT-4 Turbo Preview](/api/docs/models/gpt-4-turbo-preview.md): 早期的高速 GPT 模型 -- [GPT-4.1](/api/docs/models/gpt-4.1.md): 最智能的非推理模型 -- [GPT-4.1 Mini](/api/docs/models/gpt-4.1-mini.md): 更小、更快的 GPT-4.1 版本 -- [GPT-4.1 nano](/api/docs/models/gpt-4.1-nano.md): GPT-4.1 中最快且最具成本效益的版本 -- [GPT-4.5 Preview](/api/docs/models/gpt-4.5-preview.md): 已弃用的大型模型。 -- [GPT-4o](/api/docs/models/gpt-4o.md): 快速、智能、灵活的 GPT 模型 -- [GPT-4o Audio](/api/docs/models/gpt-4o-audio-preview.md): 支持音频输入和输出的 GPT-4o 模型 -- [GPT-4o Mini](/api/docs/models/gpt-4o-mini.md): 快速、经济的小型模型,适用于聚焦型任务 -- [GPT-4o Mini Audio](/api/docs/models/gpt-4o-mini-audio-preview.md): 较小的模型,支持音频输入和输出 -- [GPT-4o Mini Realtime](/api/docs/models/gpt-4o-mini-realtime-preview.md): 较小的实时模型,支持文本和音频输入和输出 -- [GPT-4o Mini Search Preview](/api/docs/models/gpt-4o-mini-search-preview.md): 快速且经济的小型模型,用于网页搜索 +- [babbage-002](/api/docs/models/babbage-002.md): 用于替代 GPT-3 ada 和 babbage 基础模型 +- [Chat Latest](/api/docs/models/chat-latest.md): ChatGPT 中使用的最新 Instant 模型 +- [ChatGPT-4o](/api/docs/models/chatgpt-4o-latest.md): ChatGPT 中使用的 GPT-4o 模型 +- [chatgpt-image-latest](/api/docs/models/chatgpt-image-latest.md): ChatGPT 中使用的上一代图像模型。 +- [codex-mini-latest](/api/docs/models/codex-mini-latest.md): 为 Codex CLI 优化的快速推理模型 +- [computer-use-preview](/api/docs/models/computer-use-preview.md): 专为计算机使用工具设计的模型 +- [davinci-002](/api/docs/models/davinci-002.md): 用于替代 GPT-3 curie 和 davinci 基础模型 +- [Daybreak Blue](/api/docs/models/gpt-daybreak-blue-latest.md): 旗舰通用模型的别名,并附带针对防御性网络安全工作的安全防护。 +- [Daybreak Red](/api/docs/models/gpt-daybreak-red-latest.md): 用于已获授权的漏洞研究与安全测试的高级网络安全模型别名。 +- [GPT-3.5 Turbo](/api/docs/models/gpt-3.5-turbo.md): 用于低成本聊天与非聊天任务的旧版 GPT 模型 +- [GPT-4](/api/docs/models/gpt-4.md):较旧的高智能 GPT 模型 +- [GPT-4 Turbo](/api/docs/models/gpt-4-turbo.md):较旧的高智能 GPT 模型 +- [GPT-4 Turbo Preview](/api/docs/models/gpt-4-turbo-preview.md):较旧的快速 GPT 模型 +- [GPT-4.1](/api/docs/models/gpt-4.1.md):最智能的非推理模型 +- [GPT-4.1 Mini](/api/docs/models/gpt-4.1-mini.md):体积更小、速度更快的 GPT-4.1 版本 +- [GPT-4.1 nano](/api/docs/models/gpt-4.1-nano.md):速度最快、成本效益最高的 GPT-4.1 版本 +- [GPT-4.5 Preview](/api/docs/models/gpt-4.5-preview.md):已弃用的大模型。 +- [GPT-4o](/api/docs/models/gpt-4o.md):快速、智能、灵活的 GPT 模型 +- [GPT-4o Audio](/api/docs/models/gpt-4o-audio-preview.md):支持音频输入和输出的 GPT-4o 模型 +- [GPT-4o Mini](/api/docs/models/gpt-4o-mini.md):面向专注任务的快速、经济型小模型 +- [GPT-4o Mini Audio](/api/docs/models/gpt-4o-mini-audio-preview.md): 支持音频输入和输出的较小模型 +- [GPT-4o Mini Realtime](/api/docs/models/gpt-4o-mini-realtime-preview.md): 面向文本和音频输入与输出的较小实时模型 +- [GPT-4o Mini Search Preview](/api/docs/models/gpt-4o-mini-search-preview.md): 快速、经济的小型模型,用于网页搜索 - [GPT-4o Mini Transcribe](/api/docs/models/gpt-4o-mini-transcribe.md): 由 GPT-4o Mini 提供支持的语音转文本模型 - [GPT-4o Mini TTS](/api/docs/models/gpt-4o-mini-tts.md): 由 GPT-4o Mini 提供支持的文本转语音模型 -- [GPT-4o Realtime](/api/docs/models/gpt-4o-realtime-preview.md): 支持实时文本和音频输入和输出的模型 +- [GPT-4o Realtime](/api/docs/models/gpt-4o-realtime-preview.md): 支持实时文本和音频输入与输出的模型 - [GPT-4o Search Preview](/api/docs/models/gpt-4o-search-preview.md): 在 Chat Completions 中用于网页搜索的 GPT 模型 - [GPT-4o Transcribe](/api/docs/models/gpt-4o-transcribe.md): 由 GPT-4o 提供支持的语音转文本模型 -- [GPT-4o Transcribe Diarize](/api/docs/models/gpt-4o-transcribe-diarize.md): 可识别说话人身份的转录模型 -- [GPT-5](/api/docs/models/gpt-5.md): 此前用于编码和智能体任务的智能推理模型,支持可配置的推理强度 +- [GPT-4o Transcribe Diarize](/api/docs/models/gpt-4o-transcribe-diarize.md): 能够识别说话者身份的转录模型 +- [GPT-5](/api/docs/models/gpt-5.md): 此前用于编码与智能体任务的推理模型,支持可配置的推理力度 - [GPT-5 Chat](/api/docs/models/gpt-5-chat-latest.md): ChatGPT 中使用的 GPT-5 模型 -- [GPT-5 Mini](/api/docs/models/gpt-5-mini.md): 面向成本敏感、低延迟、高吞吐量工作负载的近前沿智能 -- [GPT-5 nano](/api/docs/models/gpt-5-nano.md): 最快且最具成本效益的 GPT-5 版本 -- [GPT-5 Pro](/api/docs/models/gpt-5-pro.md): 产生更智能、更精确回答的 GPT-5 版本 -- [GPT-5-Codex](/api/docs/models/gpt-5-codex.md): 针对 Codex 中智能体编码优化的 GPT-5 版本 -- [GPT-5.1](/api/docs/models/gpt-5.1.md): 适用于编码和智能体任务的最佳模型,具备可配置的推理强度 +- [GPT-5 Mini](/api/docs/models/gpt-5-mini.md): 面向成本敏感、低延迟、高吞吐量工作负载的强大智能 +- [GPT-5 nano](/api/docs/models/gpt-5-nano.md): 速度最快、成本效益最高的 GPT-5 版本 +- [GPT-5 Pro](/api/docs/models/gpt-5-pro.md): 生成更智能、更精确响应的 GPT-5 版本 +- [GPT-5-Codex](/api/docs/models/gpt-5-codex.md): 面向 Codex 智能体编码优化的 GPT-5 版本 +- [GPT-5.1](/api/docs/models/gpt-5.1.md): 面向编码和智能体任务的最强模型,支持可配置的推理力度 - [GPT-5.1 Chat](/api/docs/models/gpt-5.1-chat-latest.md): ChatGPT 中使用的 GPT-5.1 模型 -- [GPT-5.1-Codex](/api/docs/models/gpt-5.1-codex.md): 针对 Codex 中智能体编码优化的 GPT-5.1 版本。 -- [GPT-5.1-Codex Mini](/api/docs/models/gpt-5.1-codex-mini.md): GPT-5.1-Codex 的更小、更具成本效益、能力更弱的版本 +- [GPT-5.1-Codex](/api/docs/models/gpt-5.1-codex.md): 面向 Codex 智能体编码优化的 GPT-5.1 版本。 +- [GPT-5.1-Codex Mini](/api/docs/models/gpt-5.1-codex-mini.md): 更小、成本更低、能力较弱的 GPT-5.1-Codex 版本 - [GPT-5.1-Codex-Max](/api/docs/models/gpt-5.1-codex-max.md): 针对长时间运行任务优化的 GPT-5.1-codex 版本。 -- [GPT-5.2](/api/docs/models/gpt-5.2.md): 此前用于专业工作的前沿模型,可配置推理力度 -- [GPT-5.2 Chat](/api/docs/models/gpt-5.2-chat-latest.md): 用于 ChatGPT 的 GPT-5.2 模型 -- [GPT-5.2 Pro](/api/docs/models/gpt-5.2-pro.md): 此前的专业工作 Pro 模型,能够产生更智能、更精确的回答。 -- [GPT-5.2-Codex](/api/docs/models/gpt-5.2-codex.md): 我们最智能的编码模型,针对长时程智能体编码任务进行了优化。 -- [GPT-5.3 Chat](/api/docs/models/gpt-5.3-chat-latest.md): 用于 ChatGPT 的 GPT-5.3 Instant 模型 -- [GPT-5.3-Codex](/api/docs/models/gpt-5.3-codex.md): 迄今为止能力最强的智能体编码模型。 -- [GPT-5.4](/api/docs/models/gpt-5.4.md): 用于编码和专业工作的更具性价比的模型。 -- [GPT-5.4 Mini](/api/docs/models/gpt-5.4-mini.md): 迄今为止我们最强的 mini 模型,适用于编码、计算机使用和子智能体 +- [GPT-5.2](/api/docs/models/gpt-5.2.md): 面向专业工作的前代旗舰模型,支持可配置的推理力度 +- [GPT-5.2 Chat](/api/docs/models/gpt-5.2-chat-latest.md): ChatGPT 中使用的 GPT-5.2 模型 +- [GPT-5.2 Pro](/api/docs/models/gpt-5.2-pro.md): 面向专业工作的前代 Pro 模型,能够产出更智能、更精确的回复。 +- [GPT-5.2-Codex](/api/docs/models/gpt-5.2-codex.md): 我们最智能的编程模型,专为长时程、智能体化编码任务进行了优化。 +- [GPT-5.3 Chat](/api/docs/models/gpt-5.3-chat-latest.md): ChatGPT 中使用的 GPT-5.3 Instant 模型 +- [GPT-5.3-Codex](/api/docs/models/gpt-5.3-codex.md): 迄今为止能力最强的智能体化编程模型。 +- [GPT-5.4](/api/docs/models/gpt-5.4.md): 一款更具性价比的模型,适用于编程和专业工作。 +- [GPT-5.4 Mini](/api/docs/models/gpt-5.4-mini.md): 我们迄今最强的 mini 模型,适用于编程、计算机使用和子智能体 - [GPT-5.4 nano](/api/docs/models/gpt-5.4-nano.md): 我们最便宜的 GPT-5.4 系列模型,适用于简单的高吞吐量任务 -- [GPT-5.4 Pro](/api/docs/models/gpt-5.4-pro.md): GPT-5.4 的版本,能够产生更智能、更精确的回答。 -- [GPT-5.5](/api/docs/models/gpt-5.5.md): 面向编码与专业工作的全新智能水平。 -- [GPT-5.5 Pro](/api/docs/models/gpt-5.5-pro.md): 产生更智能、更精准回复的 GPT-5.5 版本。 -- [GPT-5.6 Cyber](/api/docs/models/gpt-5.6-cyber.md): 面向已授权的漏洞研究与安全测试的最先进网络安全模型。 +- [GPT-5.4 Pro](/api/docs/models/gpt-5.4-pro.md): GPT-5.4 的版本,能够产出更智能、更精确的回复。 +- [GPT-5.5](/api/docs/models/gpt-5.5.md): 面向编码与专业工作的全新智能类别。 +- [GPT-5.5 Pro](/api/docs/models/gpt-5.5-pro.md): GPT-5.5 的版本,可生成更智能、更精准的响应。 +- [GPT-5.6 Cyber](/api/docs/models/gpt-5.6-cyber.md): 面向经授权的漏洞研究与安全测试的最先进的网络安全模型。 - [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna.md): 针对成本敏感型工作负载优化的 GPT-5.6 模型 -- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md): 面向复杂专业工作的前沿模型 -- [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md): 兼顾智能与成本的 GPT-5.6 模型 -- [GPT-Audio](/api/docs/models/gpt-audio.md): 通过 Chat Completions API 处理音频输入与输出 -- [GPT-Audio Mini](/api/docs/models/gpt-audio-mini.md): 高性价比版本的 GPT Audio -- [GPT-Audio-1.5](/api/docs/models/gpt-audio-1.5.md): 通过 Chat Completions 实现音频输入与音频输出的最佳语音模型。 -- [GPT-Image-1](/api/docs/models/gpt-image-1.md): 我们上一代的图像生成模型 -- [GPT-Image-1 Mini](/api/docs/models/gpt-image-1-mini.md): 高性价比版本的 GPT Image 1 -- [GPT-Image-1.5](/api/docs/models/gpt-image-1.5.md): 我们上一代的图像生成模型 +- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md): 面向复杂专业工作的旗舰模型 +- [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md): 在智能与成本之间取得平衡的 GPT-5.6 模型 +- [GPT-Audio](/api/docs/models/gpt-audio.md): 适用于通过 Chat Completions API 进行音频输入与输出 +- [GPT-Audio Mini](/api/docs/models/gpt-audio-mini.md): GPT Audio 的高性价比版本 +- [GPT-Audio-1.5](/api/docs/models/gpt-audio-1.5.md): 通过 Chat Completions 提供音频输入与音频输出的最佳语音模型。 +- [GPT-Image-1](/api/docs/models/gpt-image-1.md): 我们此前的图像生成模型 +- [GPT-Image-1 Mini](/api/docs/models/gpt-image-1-mini.md): GPT Image 1 的高性价比版本 +- [GPT-Image-1.5](/api/docs/models/gpt-image-1.5.md): 我们此前的图像生成模型 - [GPT-Image-2](/api/docs/models/gpt-image-2.md): 最先进的图像生成模型 - [GPT-Live-Transcribe](/api/docs/models/gpt-live-transcribe.md): 用于实时转录的低延迟语音转文本模型 -- [gpt-oss-120b](/api/docs/models/gpt-oss-120b.md): 最强大的开放权重模型,可放入单个 H100 GPU -- [gpt-oss-20b](/api/docs/models/gpt-oss-20b.md): 面向低延迟的中等规模开放权重模型 -- [GPT-Realtime](/api/docs/models/gpt-realtime.md): 支持实时文本和音频输入和输出的模型 +- [gpt-oss-120b](/api/docs/models/gpt-oss-120b.md): 最强大的开放权重模型,可容纳于单个 H100 GPU +- [gpt-oss-20b](/api/docs/models/gpt-oss-20b.md): 用于低延迟场景的中等规模开放权重模型 +- [GPT-Realtime](/api/docs/models/gpt-realtime.md): 支持实时文本和音频输入与输出的模型 - [GPT-Realtime Mini](/api/docs/models/gpt-realtime-mini.md): GPT-Realtime 的高性价比版本 -- [GPT-Realtime-1.5](/api/docs/models/gpt-realtime-1.5.md): 适用于音频输入与输出的最佳语音模型 +- [GPT-Realtime-1.5](/api/docs/models/gpt-realtime-1.5.md): 最适合音频输入与音频输出的语音模型 - [GPT-Realtime-2](/api/docs/models/gpt-realtime-2.md): 支持工具调用的推理模型 - [GPT-Realtime-2.1](/api/docs/models/gpt-realtime-2.1.md): 支持工具调用的推理模型 - [GPT-Realtime-2.1 Mini](/api/docs/models/gpt-realtime-2.1-mini.md): 支持工具调用的推理模型 -- [GPT-Realtime-Translate](/api/docs/models/gpt-realtime-translate.md): 流式语音到语音翻译模型 +- [GPT-Realtime-Translate](/api/docs/models/gpt-realtime-translate.md): 流式语音转语音翻译模型 - [GPT-Realtime-Whisper](/api/docs/models/gpt-realtime-whisper.md): 用于实时转录的流式语音转文本模型 -- [GPT-Transcribe](/api/docs/models/gpt-transcribe.md): 高精度语音转文本模型,用于文件和 Realtime 输入转录 -- [o1](/api/docs/models/o1.md): 上一代完整 o 系列推理模型 -- [o1 Preview](/api/docs/models/o1-preview.md): 我们首个 o 系列推理模型的预览版 -- [o1-mini](/api/docs/models/o1-mini.md): o1 的小型替代模型 -- [o1-pro](/api/docs/models/o1-pro.md): 采用更多算力以提供更优回复的 o1 版本 -- [o3](/api/docs/models/o3.md): 面向复杂任务的推理模型,已由 GPT-5 继任 -- [o3-deep-research](/api/docs/models/o3-deep-research.md): 我们最强大的深度研究模型 -- [o3-mini](/api/docs/models/o3-mini.md): o3 的小型替代模型 -- [o3-pro](/api/docs/models/o3-pro.md): 采用更多算力以提供更优回复的 o3 版本 -- [o4-mini](/api/docs/models/o4-mini.md): 快速且经济高效的推理模型,已由 GPT-5 Mini 继任 -- [o4-mini-deep-research](/api/docs/models/o4-mini-deep-research.md):更快速、更经济实惠的深度研究模型 -- [omni-moderation](/api/docs/models/omni-moderation-latest.md):识别文本和图像中潜在的有害内容 -- [Sora 2](/api/docs/models/sora-2.md):支持同步音频的旗舰视频生成模型 -- [Sora 2 Pro](/api/docs/models/sora-2-pro.md):最先进的同步音频视频生成模型 -- [text-embedding-3-large](/api/docs/models/text-embedding-3-large.md):能力最强的嵌入模型 -- [text-embedding-3-small](/api/docs/models/text-embedding-3-small.md):小型嵌入模型 -- [text-embedding-ada-002](/api/docs/models/text-embedding-ada-002.md):较早版本的嵌入模型 -- [text-moderation](/api/docs/models/text-moderation-latest.md):上一代纯文本审核模型 -- [text-moderation-stable](/api/docs/models/text-moderation-stable.md):上一代纯文本审核模型 -- [TTS-1](/api/docs/models/tts-1.md):针对速度优化的文本转语音模型 -- [TTS-1 HD](/api/docs/models/tts-1-hd.md): 专为高质量而优化的文本转语音模型 -- [Whisper](/api/docs/models/whisper-1.md): 通用语音识别模型 +- [GPT-Transcribe](/api/docs/models/gpt-transcribe.md):用于文件和 Realtime 输入转写的高精度语音转文本模型 +- [o1](/api/docs/models/o1.md):上一代完整 o 系列推理模型 +- [o1 Preview](/api/docs/models/o1-preview.md):我们第一款 o 系列推理模型的预览版 +- [o1-mini](/api/docs/models/o1-mini.md):o1 的小型替代模型 +- [o1-pro](/api/docs/models/o1-pro.md):使用更多算力以提供更优回复的 o1 版本 +- [o3](/api/docs/models/o3.md):用于复杂任务的推理模型,已由 GPT-5 接替 +- [o3-deep-research](/api/docs/models/o3-deep-research.md):我们最强大的深度研究模型 +- [o3-mini](/api/docs/models/o3-mini.md):o3 的小型替代模型 +- [o3-pro](/api/docs/models/o3-pro.md):使用更多算力以提供更优回复的 o3 版本 +- [o4-mini](/api/docs/models/o4-mini.md):快速且经济高效的推理模型,已由 GPT-5 Mini 接替 +- [o4-mini-deep-research](/api/docs/models/o4-mini-deep-research.md):更快、更经济的深度研究模型 +- [omni-moderation](/api/docs/models/omni-moderation-latest.md):识别文本和图像中潜在有害的内容 +- [Sora 2](/api/docs/models/sora-2.md):支持同步音频的旗舰视频生成 +- [Sora 2 Pro](/api/docs/models/sora-2-pro.md):最先进的同步音频视频生成 +- [text-embedding-3-large](/api/docs/models/text-embedding-3-large.md):能力最强的嵌入模型 +- [text-embedding-3-small](/api/docs/models/text-embedding-3-small.md):小型嵌入模型 +- [text-embedding-ada-002](/api/docs/models/text-embedding-ada-002.md):较旧的嵌入模型 +- [text-moderation](/api/docs/models/text-moderation-latest.md):上一代仅支持文本的审核模型 +- [text-moderation-stable](/api/docs/models/text-moderation-stable.md):上一代仅支持文本的审核模型 +- [TTS-1](/api/docs/models/tts-1.md):针对速度优化的文本转语音模型 +- [TTS-1 HD](/api/docs/models/tts-1-hd.md):专为高质量而优化的文本转语音模型 +- [Whisper](/api/docs/models/whisper-1.md):通用语音识别模型 diff --git a/docs/zh/api/docs/models/all.md b/docs/zh/api/docs/models/all.md index f625a1d..e4bbfc8 100644 --- a/docs/zh/api/docs/models/all.md +++ b/docs/zh/api/docs/models/all.md @@ -1,118 +1,118 @@ # 模型 -> 完整文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -> 浏览 OpenAI API 上可用的模型。 +> 探索 OpenAI API 上可用的模型。 -如果你不确定从何入手,可以使用 [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol),这是我们面向复杂推理和编码的旗舰模型。选择 [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra) 以兼顾智能与成本,或选择 [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna) 以应对成本敏感、高吞吐量的工作负载。 +如果你不确定从哪里开始,可以使用 [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol),这是我们用于复杂推理和编码的旗舰模型。选择 [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra) 可在智能与成本之间取得平衡,或选择 [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna) 以应对成本敏感、高吞吐量的工作负载。 -所有最新的 OpenAI 模型都支持文本和图像输入、文本输出、多语言能力以及视觉理解。可通过 [Responses API](/api/reference/resources/responses/methods/create) 以及我们的 [客户端 SDK](/api/docs/libraries). +所有最新的 OpenAI 模型均支持文本和图像输入、文本输出、多语言能力以及视觉理解。可通过 [Responses API](/api/reference/resources/responses/methods/create) 以及我们的 [客户端 SDK](/api/docs/libraries). -## 推荐模型 +## Recommended models -- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md): 适合复杂推理与编码任务的起点。 -- [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md): 在智能与成本之间取得平衡。 -- [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna.md): 为成本敏感的高并发工作负载而优化。 +- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md):从这里开始处理复杂推理和编码任务。 +- [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md):兼顾智能与成本。 +- [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna.md):针对成本敏感型高吞吐量工作负载进行优化。 ## 浏览我们的完整模型目录 面向多种任务的多样化模型 -了解 [OpenAI 如何使用你的数据](/api/docs/guides/your-data.md) 并查看 [已弃用的模型](/api/docs/deprecations.md). +查看 [了解 OpenAI 如何使用你的数据](/api/docs/guides/your-data.md) ,并查看 [已弃用模型](/api/docs/deprecations.md). -- [babbage-002](/api/docs/models/babbage-002.md): GPT-3 ada 和 babbage 基础模型的替代 -- [Chat Latest](/api/docs/models/chat-latest.md): ChatGPT 中使用的最新 Instant 模型 -- [ChatGPT-4o](/api/docs/models/chatgpt-4o-latest.md): ChatGPT 中使用的 GPT-4o 模型 -- [chatgpt-image-latest](/api/docs/models/chatgpt-image-latest.md): ChatGPT 此前使用的图像模型。 -- [codex-mini-latest](/api/docs/models/codex-mini-latest.md): 为 Codex CLI 优化的快速推理模型 -- [computer-use-preview](/api/docs/models/computer-use-preview.md): 专用于 computer use 工具的模型 -- [davinci-002](/api/docs/models/davinci-002.md): GPT-3 curie 和 davinci 基础模型的替代 -- [Daybreak Blue](/api/docs/models/daybreak-blue-latest.md): 面向防御性网络安全工作的、具备安全保障的前沿通用模型别名。 -- [Daybreak Red](/api/docs/models/daybreak-red-latest.md): 面向已获授权的漏洞研究与安全测试的高级网络安全模型别名。 -- [GPT-3.5 Turbo](/api/docs/models/gpt-3.5-turbo.md): 用于低成本聊天和非聊天任务的旧版 GPT 模型 -- [GPT-4](/api/docs/models/gpt-4.md):较早期的高智能 GPT 模型 -- [GPT-4 Turbo](/api/docs/models/gpt-4-turbo.md):较早期的高智能 GPT 模型 -- [GPT-4 Turbo Preview](/api/docs/models/gpt-4-turbo-preview.md):较早期的快速 GPT 模型 +- [babbage-002](/api/docs/models/babbage-002.md):GPT-3 ada 和 babbage 基础模型的替代品 +- [Chat Latest](/api/docs/models/chat-latest.md):ChatGPT 中使用的最新 Instant 模型 +- [ChatGPT-4o](/api/docs/models/chatgpt-4o-latest.md):ChatGPT 中使用的 GPT-4o 模型 +- [chatgpt-image-latest](/api/docs/models/chatgpt-image-latest.md):ChatGPT 中使用的上一代图像模型。 +- [codex-mini-latest](/api/docs/models/codex-mini-latest.md):针对 Codex CLI 优化的快速推理模型 +- [computer-use-preview](/api/docs/models/computer-use-preview.md):用于计算机使用工具的专用模型 +- [davinci-002](/api/docs/models/davinci-002.md):GPT-3 curie 和 davinci 基础模型的替代品 +- [Daybreak Blue](/api/docs/models/gpt-daybreak-blue-latest.md):旗舰通用模型的别名,用于防御性网络安全工作并附带安全保障。 +- [Daybreak Red](/api/docs/models/gpt-daybreak-red-latest.md):用于经授权的漏洞研究和安全测试的高级网络安全模型别名。 +- [GPT-3.5 Turbo](/api/docs/models/gpt-3.5-turbo.md):用于更廉价聊天和非聊天任务的旧版 GPT 模型 +- [GPT-4](/api/docs/models/gpt-4.md):一个较早的高智能 GPT 模型 +- [GPT-4 Turbo](/api/docs/models/gpt-4-turbo.md):一个较早的高智能 GPT 模型 +- [GPT-4 Turbo Preview](/api/docs/models/gpt-4-turbo-preview.md):一个较早的快速 GPT 模型 - [GPT-4.1](/api/docs/models/gpt-4.1.md):最智能的非推理模型 - [GPT-4.1 Mini](/api/docs/models/gpt-4.1-mini.md):更小、更快的 GPT-4.1 版本 -- [GPT-4.1 nano](/api/docs/models/gpt-4.1-nano.md):最快且性价比最高的 GPT-4.1 版本 +- [GPT-4.1 nano](/api/docs/models/gpt-4.1-nano.md):GPT-4.1 中最快、成本效益最高的版本 - [GPT-4.5 Preview](/api/docs/models/gpt-4.5-preview.md):已弃用的大型模型。 -- [GPT-4o](/api/docs/models/gpt-4o.md):快速、智能且灵活的 GPT 模型 -- [GPT-4o Audio](/api/docs/models/gpt-4o-audio-preview.md):支持音频输入和输出的 GPT-4o 模型 -- [GPT-4o Mini](/api/docs/models/gpt-4o-mini.md):面向聚焦任务的快速、经济的小型模型 +- [GPT-4o](/api/docs/models/gpt-4o.md):快速、智能、灵活的 GPT 模型 +- [GPT-4o Audio](/api/docs/models/gpt-4o-audio-preview.md):能够处理音频输入和输出的 GPT-4o 模型 +- [GPT-4o Mini](/api/docs/models/gpt-4o-mini.md):面向聚焦任务的高速、经济小型模型 - [GPT-4o Mini Audio](/api/docs/models/gpt-4o-mini-audio-preview.md): 支持音频输入和输出的较小模型 -- [GPT-4o Mini Realtime](/api/docs/models/gpt-4o-mini-realtime-preview.md): 用于文本和音频输入输出的较小实时模型 -- [GPT-4o Mini Search Preview](/api/docs/models/gpt-4o-mini-search-preview.md): 面向网页搜索的快速、经济的小型模型 -- [GPT-4o Mini Transcribe](/api/docs/models/gpt-4o-mini-transcribe.md): 由 GPT-4o Mini 提供支持的语音转文本模型 -- [GPT-4o Mini TTS](/api/docs/models/gpt-4o-mini-tts.md): 由 GPT-4o Mini 提供支持的文本转语音模型 +- [GPT-4o Mini Realtime](/api/docs/models/gpt-4o-mini-realtime-preview.md): 面向文本和音频输入输出的较小实时模型 +- [GPT-4o Mini Search Preview](/api/docs/models/gpt-4o-mini-search-preview.md): 面向网页搜索的快速、经济的轻量模型 +- [GPT-4o Mini Transcribe](/api/docs/models/gpt-4o-mini-transcribe.md): 由 GPT-4o Mini 驱动的语音转文本模型 +- [GPT-4o Mini TTS](/api/docs/models/gpt-4o-mini-tts.md): 由 GPT-4o Mini 驱动的文本转语音模型 - [GPT-4o Realtime](/api/docs/models/gpt-4o-realtime-preview.md): 支持实时文本和音频输入输出的模型 -- [GPT-4o Search Preview](/api/docs/models/gpt-4o-search-preview.md): 在 Chat Completions 中用于网页搜索的 GPT 模型 -- [GPT-4o Transcribe](/api/docs/models/gpt-4o-transcribe.md): 由 GPT-4o 提供支持的语音转文本模型 +- [GPT-4o Search Preview](/api/docs/models/gpt-4o-search-preview.md): 用于 Chat Completions 中网页搜索的 GPT 模型 +- [GPT-4o Transcribe](/api/docs/models/gpt-4o-transcribe.md): 由 GPT-4o 驱动的语音转文本模型 - [GPT-4o Transcribe Diarize](/api/docs/models/gpt-4o-transcribe-diarize.md): 可识别说话人的转录模型 -- [GPT-5](/api/docs/models/gpt-5.md): 此前用于编程和智能体任务的智能推理模型,支持可配置的推理力度 +- [GPT-5](/api/docs/models/gpt-5.md): 用于编码和智能体任务的上一代智能推理模型,支持可配置的推理力度 - [GPT-5 Chat](/api/docs/models/gpt-5-chat-latest.md): ChatGPT 中使用的 GPT-5 模型 -- [GPT-5 Mini](/api/docs/models/gpt-5-mini.md): 面向成本敏感、低延迟、高吞吐量工作负载的近前沿智能 -- [GPT-5 nano](/api/docs/models/gpt-5-nano.md): 速度最快、成本效益最高的 GPT-5 版本 -- [GPT-5 Pro](/api/docs/models/gpt-5-pro.md): 生成更智能、更精确回答的 GPT-5 版本 -- [GPT-5-Codex](/api/docs/models/gpt-5-codex.md): 针对 Codex 中智能体编程优化的 GPT-5 版本 -- [GPT-5.1](/api/docs/models/gpt-5.1.md): 适用于编程与智能体任务的最佳模型,支持可配置的推理力度 +- [GPT-5 Mini](/api/docs/models/gpt-5-mini.md): 为成本敏感、低延迟、高吞吐量工作负载提供强劲智能 +- [GPT-5 nano](/api/docs/models/gpt-5-nano.md): GPT-5 中最快且最具成本效益的版本 +- [GPT-5 Pro](/api/docs/models/gpt-5-pro.md): 能够生成更智能、更精确回答的 GPT-5 版本 +- [GPT-5-Codex](/api/docs/models/gpt-5-codex.md): 面向 Codex 中智能体编码场景优化的 GPT-5 版本 +- [GPT-5.1](/api/docs/models/gpt-5.1.md): 适用于编码和智能体任务的最强模型,支持可配置的推理力度 - [GPT-5.1 Chat](/api/docs/models/gpt-5.1-chat-latest.md): ChatGPT 中使用的 GPT-5.1 模型 -- [GPT-5.1-Codex](/api/docs/models/gpt-5.1-codex.md): 针对 Codex 中智能体编程优化的 GPT-5.1 版本。 -- [GPT-5.1-Codex Mini](/api/docs/models/gpt-5.1-codex-mini.md): 体积更小、成本效益更高、能力较弱的 GPT-5.1-Codex 版本 -- [GPT-5.1-Codex-Max](/api/docs/models/gpt-5.1-codex-max.md): 针对长时间运行任务优化的 GPT-5.1-codex 版本。 -- [GPT-5.2](/api/docs/models/gpt-5.2.md): 面向专业工作的上一代前沿模型,具有可配置的推理投入度 -- [GPT-5.2 Chat](/api/docs/models/gpt-5.2-chat-latest.md): 在 ChatGPT 中使用的 GPT-5.2 模型 -- [GPT-5.2 Pro](/api/docs/models/gpt-5.2-pro.md): 面向专业工作的上一代 pro 模型,能够产生更智能、更精确的响应。 -- [GPT-5.2-Codex](/api/docs/models/gpt-5.2-codex.md): 我们最智能的编码模型,专为长期、智能体驱动的编码任务进行了优化。 -- [GPT-5.3 Chat](/api/docs/models/gpt-5.3-chat-latest.md): 在 ChatGPT 中使用的 GPT-5.3 Instant 模型 -- [GPT-5.3-Codex](/api/docs/models/gpt-5.3-codex.md): 迄今为止能力最强的智能体驱动编码模型。 -- [GPT-5.4](/api/docs/models/gpt-5.4.md): 用于编码和专业工作的更具性价比的模型。 -- [GPT-5.4 Mini](/api/docs/models/gpt-5.4-mini.md): 我们迄今最强的 mini 模型,适用于编码、计算机使用和子智能体 +- [GPT-5.1-Codex](/api/docs/models/gpt-5.1-codex.md): 面向 Codex 中智能体编码场景优化的 GPT-5.1 版本。 +- [GPT-5.1-Codex Mini](/api/docs/models/gpt-5.1-codex-mini.md): 更小、更具成本效益且能力略低的 GPT-5.1-Codex 版本 +- [GPT-5.1-Codex-Max](/api/docs/models/gpt-5.1-codex-max.md): 面向长时间运行任务优化的 GPT-5.1-codex 版本。 +- [GPT-5.2](/api/docs/models/gpt-5.2.md): 适用于专业工作的前代旗舰模型,支持可配置的推理力度 +- [GPT-5.2 Chat](/api/docs/models/gpt-5.2-chat-latest.md): 用于 ChatGPT 的 GPT-5.2 模型 +- [GPT-5.2 Pro](/api/docs/models/gpt-5.2-pro.md): 适用于专业工作的前代专业模型,能够生成更智能、更精确的回答。 +- [GPT-5.2-Codex](/api/docs/models/gpt-5.2-codex.md): 我们最智能的编程模型,针对长周期、代理式编程任务进行了优化。 +- [GPT-5.3 Chat](/api/docs/models/gpt-5.3-chat-latest.md): 用于 ChatGPT 的 GPT-5.3 Instant 模型 +- [GPT-5.3-Codex](/api/docs/models/gpt-5.3-codex.md): 迄今为止能力最强的代理式编程模型。 +- [GPT-5.4](/api/docs/models/gpt-5.4.md): 用于编程和专业工作的更具性价比的模型。 +- [GPT-5.4 Mini](/api/docs/models/gpt-5.4-mini.md): 我们迄今为止用于编程、计算机使用和子智能体的最强 mini 模型 - [GPT-5.4 nano](/api/docs/models/gpt-5.4-nano.md): 我们最便宜的 GPT-5.4 级别模型,适用于简单的高吞吐量任务 -- [GPT-5.4 Pro](/api/docs/models/gpt-5.4-pro.md): GPT-5.4 的版本,能够产生更智能、更精确的响应。 -- [GPT-5.5](/api/docs/models/gpt-5.5.md): 用于编码和专业知识工作的全新智能等级。 -- [GPT-5.5 Pro](/api/docs/models/gpt-5.5-pro.md): 产生更智能、更精确回答的 GPT-5.5 版本。 -- [GPT-5.6 Cyber](/api/docs/models/gpt-5.6-cyber.md): 用于授权漏洞研究和安全测试的最先进网络安全模型。 +- [GPT-5.4 Pro](/api/docs/models/gpt-5.4-pro.md): GPT-5.4 的版本,能够生成更智能、更精确的回答。 +- [GPT-5.5](/api/docs/models/gpt-5.5.md): 面向编码和专业工作的全新智能类别。 +- [GPT-5.5 Pro](/api/docs/models/gpt-5.5-pro.md): GPT-5.5 版本,可生成更智能、更精确的回复。 +- [GPT-5.6 Cyber](/api/docs/models/gpt-5.6-cyber.md): 我们最先进的网络安全模型,用于授权的漏洞研究和安全测试。 - [GPT-5.6 Luna](/api/docs/models/gpt-5.6-luna.md): 针对成本敏感型工作负载优化的 GPT-5.6 模型 -- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md): 用于复杂专业知识工作的前沿模型 +- [GPT-5.6 Sol](/api/docs/models/gpt-5.6-sol.md): 面向复杂专业工作的旗舰模型 - [GPT-5.6 Terra](/api/docs/models/gpt-5.6-terra.md): 在智能与成本之间取得平衡的 GPT-5.6 模型 -- [GPT-Audio](/api/docs/models/gpt-audio.md): 用于通过 Chat Completions API 进行音频输入和输出 +- [GPT-Audio](/api/docs/models/gpt-audio.md): 适用于音频输入和输出,使用 Chat Completions API - [GPT-Audio Mini](/api/docs/models/gpt-audio-mini.md): GPT Audio 的高性价比版本 -- [GPT-Audio-1.5](/api/docs/models/gpt-audio-1.5.md): 通过 Chat Completions 进行音频输入和音频输出的最佳语音模型。 +- [GPT-Audio-1.5](/api/docs/models/gpt-audio-1.5.md): 通过 Chat Completions 提供音频输入、音频输出的最佳语音模型。 - [GPT-Image-1](/api/docs/models/gpt-image-1.md): 我们此前的图像生成模型 - [GPT-Image-1 Mini](/api/docs/models/gpt-image-1-mini.md): GPT Image 1 的高性价比版本 - [GPT-Image-1.5](/api/docs/models/gpt-image-1.5.md): 我们此前的图像生成模型 - [GPT-Image-2](/api/docs/models/gpt-image-2.md): 最先进的图像生成模型 - [GPT-Live-Transcribe](/api/docs/models/gpt-live-transcribe.md): 用于实时转录的低延迟语音转文本模型 -- [gpt-oss-120b](/api/docs/models/gpt-oss-120b.md): 最强大的开放权重模型,可放入单个 H100 GPU -- [gpt-oss-20b](/api/docs/models/gpt-oss-20b.md): 面向低延迟的中等规模开放权重模型 +- [gpt-oss-120b](/api/docs/models/gpt-oss-120b.md): 最强大的开放权重模型,可适配单块 H100 GPU +- [gpt-oss-20b](/api/docs/models/gpt-oss-20b.md): 低延迟的中等规模开放权重模型 - [GPT-Realtime](/api/docs/models/gpt-realtime.md): 支持实时文本和音频输入输出的模型 - [GPT-Realtime Mini](/api/docs/models/gpt-realtime-mini.md): GPT-Realtime 的高性价比版本 -- [GPT-Realtime-1.5](/api/docs/models/gpt-realtime-1.5.md): 最出色的语音输入、语音输出模型 +- [GPT-Realtime-1.5](/api/docs/models/gpt-realtime-1.5.md): 适用于音频输入与音频输出的最佳语音模型 - [GPT-Realtime-2](/api/docs/models/gpt-realtime-2.md): 支持工具使用的推理模型 - [GPT-Realtime-2.1](/api/docs/models/gpt-realtime-2.1.md): 支持工具使用的推理模型 - [GPT-Realtime-2.1 Mini](/api/docs/models/gpt-realtime-2.1-mini.md): 支持工具使用的推理模型 - [GPT-Realtime-Translate](/api/docs/models/gpt-realtime-translate.md): 流式语音转语音翻译模型 - [GPT-Realtime-Whisper](/api/docs/models/gpt-realtime-whisper.md): 用于实时转录的流式语音转文本模型 -- [GPT-Transcribe](/api/docs/models/gpt-transcribe.md): 用于文件和实时输入转写的高精度语音转文本模型 -- [o1](/api/docs/models/o1.md): 上一代完整 o 系列推理模型 -- [o1 Preview](/api/docs/models/o1-preview.md): 我们首个 o 系列推理模型的预览版 -- [o1-mini](/api/docs/models/o1-mini.md): 替代 o1 的小模型方案 -- [o1-pro](/api/docs/models/o1-pro.md): 配备更多算力以提供更优响应的 o1 版本 -- [o3](/api/docs/models/o3.md): 面向复杂任务的推理模型,已被 GPT-5 取代 -- [o3-deep-research](/api/docs/models/o3-deep-research.md): 我们最强大的深度研究模型 -- [o3-mini](/api/docs/models/o3-mini.md): 替代 o3 的小模型方案 -- [o3-pro](/api/docs/models/o3-pro.md): 配备更多算力以提供更优响应的 o3 版本 -- [o4-mini](/api/docs/models/o4-mini.md): 快速且高性价比的推理模型,已被 GPT-5 Mini 取代 -- [o4-mini-deep-research](/api/docs/models/o4-mini-deep-research.md): 更快速、更经济实惠的深度研究模型 -- [omni-moderation](/api/docs/models/omni-moderation-latest.md): 识别文本和图像中潜在有害的内容 -- [Sora 2](/api/docs/models/sora-2.md): 旗舰级视频生成,支持同步音频 -- [Sora 2 Pro](/api/docs/models/sora-2-pro.md): 最先进的同步音频视频生成 -- [text-embedding-3-large](/api/docs/models/text-embedding-3-large.md): 能力最强的嵌入模型 -- [text-embedding-3-small](/api/docs/models/text-embedding-3-small.md): 小型嵌入模型 -- [text-embedding-ada-002](/api/docs/models/text-embedding-ada-002.md): 旧版嵌入模型 -- [text-moderation](/api/docs/models/text-moderation-latest.md): 上一代纯文本审核模型 -- [text-moderation-stable](/api/docs/models/text-moderation-stable.md): 上一代纯文本审核模型 -- [TTS-1](/api/docs/models/tts-1.md): 针对速度优化的文本转语音模型 -- [TTS-1 HD](/api/docs/models/tts-1-hd.md): 专为高质量场景优化的文本转语音模型 +- [GPT-Transcribe](/api/docs/models/gpt-transcribe.md):用于文件和 Realtime 输入转写的高精度语音转文本模型 +- [o1](/api/docs/models/o1.md):上一代完整 o 系列推理模型 +- [o1 Preview](/api/docs/models/o1-preview.md):我们首个 o 系列推理模型的预览版 +- [o1-mini](/api/docs/models/o1-mini.md):o1 的小型模型替代方案 +- [o1-pro](/api/docs/models/o1-pro.md):o1 的增强算力版本,可提供更优质的回复 +- [o3](/api/docs/models/o3.md):面向复杂任务的推理模型,已由 GPT-5 接替 +- [o3-deep-research](/api/docs/models/o3-deep-research.md):我们最强大的深度研究模型 +- [o3-mini](/api/docs/models/o3-mini.md):o3 的小型模型替代方案 +- [o3-pro](/api/docs/models/o3-pro.md):o3 的增强算力版本,可提供更优质的回复 +- [o4-mini](/api/docs/models/o4-mini.md):快速且经济高效的推理模型,已由 GPT-5 Mini 接替 +- [o4-mini-deep-research](/api/docs/models/o4-mini-deep-research.md):速度更快、价格更低的深度研究模型 +- [omni-moderation](/api/docs/models/omni-moderation-latest.md):识别文本和图像中潜在有害的内容 +- [Sora 2](/api/docs/models/sora-2.md):支持同步音频的旗舰视频生成模型 +- [Sora 2 Pro](/api/docs/models/sora-2-pro.md):最先进的同步音频视频生成模型 +- [text-embedding-3-large](/api/docs/models/text-embedding-3-large.md):能力最强的嵌入模型 +- [text-embedding-3-small](/api/docs/models/text-embedding-3-small.md):小型嵌入模型 +- [text-embedding-ada-002](/api/docs/models/text-embedding-ada-002.md):旧版嵌入模型 +- [text-moderation](/api/docs/models/text-moderation-latest.md):上一代纯文本审核模型 +- [text-moderation-stable](/api/docs/models/text-moderation-stable.md):上一代纯文本审核模型 +- [TTS-1](/api/docs/models/tts-1.md):针对速度优化的文本转语音模型 +- [TTS-1 HD](/api/docs/models/tts-1-hd.md): 针对质量优化的文本转语音模型 - [Whisper](/api/docs/models/whisper-1.md): 通用语音识别模型 diff --git a/docs/zh/api/reference/resources/completions/methods/create.md b/docs/zh/api/reference/resources/completions/methods/create.md index c7143c9..26c8d4b 100644 --- a/docs/zh/api/reference/resources/completions/methods/create.md +++ b/docs/zh/api/reference/resources/completions/methods/create.md @@ -1,4 +1,4 @@ -> 完整的文档索引请参见 [llms.txt](/llms.txt)。你可以在页面 URL 末尾追加 `.md` 来获取该页面的 Markdown 版本。 +> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取该页面的 Markdown 版本。 ## Create completion @@ -6,19 +6,19 @@ 根据提供的提示和参数创建补全。 -返回一个补全对象,若请求以流式传输则返回补全对象序列。 +返回一个补全对象,若请求以流式传输则返回一组补全对象。 -### 请求体参数 +### 正文参数 - `model: string or "gpt-3.5-turbo-instruct" or "davinci-002" or "babbage-002"` - 要使用的模型 ID。你可以使用 [列出模型](/docs/api-reference/models/list) API 查看所有可用模型,或参阅我们的 [模型概述](/docs/models) 以了解它们的描述。 + 要使用的模型 ID。你可以使用 [模型列表](/docs/api-reference/models/list) API 查看所有可用模型,或参阅我们的 [模型概述](/docs/models) 了解相关描述。 - `string` - `"gpt-3.5-turbo-instruct" or "davinci-002" or "babbage-002"` - 要使用的模型 ID。你可以使用 [列出模型](/docs/api-reference/models/list) API 查看所有可用模型,或参阅我们的 [模型概述](/docs/models) 以了解它们的描述。 + 要使用的模型 ID。你可以使用 [模型列表](/docs/api-reference/models/list) API 查看所有可用模型,或参阅我们的 [模型概述](/docs/models) 了解相关描述。 - `"gpt-3.5-turbo-instruct"` @@ -28,9 +28,9 @@ - `prompt: string or array of string or array of number or array of array of number or null` - 用于生成补全的提示,可以编码为字符串、字符串数组、token 数组或 token 数组的数组。 + 用于生成补全的提示,可以编码为字符串、字符串数组、token 数组或 token 数组的数组。 - 请注意,是模型在训练期间看到的文档分隔符,因此如果未指定提示,模型将从新文档的开头开始生成。 + 注意, 是模型在训练期间看到的文档分隔符,因此如果未指定提示,模型将像从新文档的开头开始一样生成内容。 - `string` @@ -42,66 +42,66 @@ - `best_of: optional number or null` - 生成 `best_of` 补全 服务端 并返回“最佳”的那一个(每个 token 对数概率最高的那一个)。结果无法流式传输。 + 在服务端 `best_of` 生成补全服务端,并返回“最佳”结果(即每个 token 具有最高对数概率的那一个)。结果无法以流式方式返回。 - 与 `n`, `best_of` 配合使用时,控制候选补全的数量, `n` 指定要返回多少个—— `best_of` 必须大于 `n`. + 与 `n`, `best_of` 一起使用时,控制候选补全的数量, `n` 指定返回的数量—— `best_of` 必须大于 `n`. - **注意:** 由于此参数会生成大量补全,因此会很快消耗你的 token 配额。请谨慎使用,并确保你对 `max_tokens` 和 `stop`. + **注意:** 由于该参数会生成大量补全,可能会迅速消耗你的 token 配额。请谨慎使用,并确保你为 `max_tokens` 和 `stop`. - `echo: optional boolean or null` - 除了补全内容外,还回显提示 + 除了补全内容外,回显输入提示 - `frequency_penalty: optional number or null` - 介于 -2.0 到 2.0 之间的数字。正值会根据新 token 在已有文本中的出现频率对其进行惩罚,从而降低模型逐字重复相同内容的可能性。 + 介于 -2.0 和 2.0 之间的数值。正值会根据新 token 在已有文本中的出现频率对其进行惩罚,从而降低模型逐字重复相同内容的可能性。 - [查看有关频率和存在惩罚的更多信息。](/docs/guides/text-generation) + [查看关于频率惩罚和存在惩罚的更多信息。](/docs/guides/text-generation) - `logit_bias: optional map[number] or null` - 修改指定 token 出现在补全中的可能性。 + 修改指定 token 在补全中出现的概率。 - 接受一个 JSON 对象,用于将 token(通过 GPT 分词器中的 token ID 指定)映射到 -100 到 100 之间的关联偏置值。你可以使用该 [分词器工具](/tokenizer?view=bpe) 将文本转换为 token ID。从数学上讲,该偏置会在模型采样之前加到模型生成的 logits 上。确切效果因模型而异,但 -1 到 1 之间的值应会降低或提高被选中的可能性;像 -100 或 100 这样的值应会导致禁用或唯一选中相应 token。 + 接受一个 JSON 对象,将 GPT 分词器中的 token(通过其 token ID 指定)映射到 -100 到 100 之间的关联偏置值。你可以使用此 [分词器工具](/tokenizer?view=bpe) 将文本转换为 token ID。从数学上讲,该偏置会在采样之前加到模型生成的 logits 上。具体效果因模型而异,但 -1 到 1 之间的值应会降低或增加被选中的可能性;类似 -100 或 100 的值应会导致相应 token 被禁止或被唯一选中。 例如,你可以传入 `{"50256": -100}` 以防止生成 <|endoftext|> token。 - `logprobs: optional number or null` - 在以下输出上包含对数概率 `logprobs` ,即最可能的输出 token 以及所选 token。例如,如果 `logprobs` 为 5,API 将返回 5 个最可能 token 的列表。API 将始终返回采样 token 的 `logprob` ,因此响应中最多可以有 `logprobs+1` 个元素。 + 在 `logprobs` 最可能的输出 token 以及所选 token 上包含对数概率。例如,如果 `logprobs` 为 5,API 将返回一个包含 5 个最可能 token 的列表。API 始终会返回所采样 token 的 `logprob` ,因此响应中最多可能包含 `logprobs+1` 个元素。 的最大值为 `logprobs` 5。 - `max_tokens: optional number or null` - 在补全中可以生成的最大 [token 数](/tokenizer) 。 + 可在补全中生成的最大 [token 数](/tokenizer) 。你的 prompt 的 token 数加上。 - 你提示的 token 数量加上 `max_tokens` 不能超过模型的上下文长度。 [用于统计 token 的 Python 代码示例](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken) 。 + 不能超过模型的上下文长度。 `max_tokens` 可参考用于计算 token 数的。 [Python 示例代码](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken) 。 - `n: optional number or null` - 针对每个提示要生成的补全数量。 + 为每个 prompt 生成的补全数量。 - **注意:** 由于此参数会生成大量补全,因此会很快消耗你的 token 配额。请谨慎使用,并确保你对 `max_tokens` 和 `stop`. + **注意:** 由于该参数会生成大量补全,可能会迅速消耗你的 token 配额。请谨慎使用,并确保你为 `max_tokens` 和 `stop`. - `presence_penalty: optional number or null` - 介于 -2.0 到 2.0 之间的数值。正值会根据新 token 是否已在文本中出现来对其进行惩罚,从而增加模型谈论新话题的可能性。 + 介于 -2.0 到 2.0 之间的数值。正值会根据新 token 是否已出现在文本中对其进行惩罚,从而增加模型谈论新主题的可能性。 - [查看有关频率和存在惩罚的更多信息。](/docs/guides/text-generation) + [查看关于频率惩罚和存在惩罚的更多信息。](/docs/guides/text-generation) - `seed: optional number or null` - 如果指定了此参数,我们的系统将尽最大努力以确定性方式采样,确保使用相同 `seed` 和参数发起的重复请求会返回相同结果。 + 如果指定,系统将尽最大努力以确定性方式采样,使得使用相同的 `seed` 和参数发起的重复请求返回相同的结果。 - 系统不保证完全的确定性,你可以参考 `system_fingerprint` 响应参数来监控后端的变化。 + 无法保证完全确定性,你应该参考 `system_fingerprint` 响应参数来监测后端的变化。 - `stop: optional string or array of string or null` - 最新的推理模型不支持此参数 `o3` 和 `o4-mini`. + 最新的推理模型不支持该参数 `o3` 和 `o4-mini`. - 最多 4 个序列,当出现这些序列时 API 将停止生成更多 token。返回的 - 文本不会包含停止序列。 + 最多 4 个序列,遇到这些序列时 API 将停止生成更多 token。返回的 + 文本不会包含该停止序列。 - `string` @@ -109,50 +109,50 @@ - `stream: optional boolean or null` - 是否流式返回部分进度。如果启用,token 将以纯数据形式作为 [服务端发送事件](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) 在生成时立即发送,流以一条 `data: [DONE]` 消息终止。 [用于统计 token 的 Python 代码示例](https://cookbook.openai.com/examples/how_to_stream_completions). + 是否流式返回部分进度。如果设置,token 将以纯数据 [服务端发送事件](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format) 的形式在可用时立即发送,流以一条 `data: [DONE]` 消息终止。 [Python 示例代码](https://cookbook.openai.com/examples/how_to_stream_completions). - `stream_options: optional ChatCompletionStreamOptions or null` - 流式响应的选项。仅当设置了 `stream: true`. + 流式响应的选项。仅当设置 `stream: true`. - `include_obfuscation: optional boolean` 为 true 时,将启用流混淆。流混淆会向流式增量事件上的 - 字段添加 `obfuscation` 随机字符,以 - 规范化负载大小,作为对某些侧信道攻击的缓解措施。 - 默认会包含这些混淆字段,但会给数据流带来少量 - 开销。你可以将 `include_obfuscation` 设置为 - 如果你的应用程序与以下端点之间的网络链路可信,可设为 false 以优化带宽: - 你的应用程序与 OpenAI API 之间的网络链路可信,可设为 false 以优化带宽。 + 字段添加随机字符,以 `obfuscation` 规范化负载大小,作为对某些侧信道攻击的缓解措施。 + 这些混淆字段默认会被包含,但会给数据流增加少量。 + 开销。你可以设置 + 为 `include_obfuscation` 为 + 如果你信任你的应用与 + OpenAI API 之间的网络链路,则设为 false 以优化带宽。 - `include_usage: optional boolean` - 如果设置,将在 message 之前流式传输一个额外的数据块 `data: [DONE]` - 对象。该数据块上的 usage `usage` 字段显示该请求的 token 使用情况统计信息 - 整个请求,而该 `choices` 字段将始终是一个空 - 数组。 + 如果设置,则会在之前额外流式传输一个数据块 `data: [DONE]` + 消息。该数据块上的 `usage` 字段会显示整个请求的令牌用量统计信息, + 而该字段则始终是一个 `choices` 空数组。 + 空数组。 - 所有其他数据块也会包含一个 `usage` 字段,但值为 null - value. **注意:** 如果流被中断,你可能无法收到 - 包含该请求总 token 使用量的最后一个 usage 数据块。 + 所有其他数据块也会包含一个 `usage` 字段,但其值为 + null。 **注意:** 如果流被中断,你可能无法收到 + 包含整个请求总令牌用量的最终用量数据块。 - `suffix: optional string or null` - 插入文本完成后追加的后缀。 + 在已插入文本的补全内容之后出现的后缀。 - 该参数仅在以下模型中受支持: `gpt-3.5-turbo-instruct`. + 该参数仅支持 `gpt-3.5-turbo-instruct`. - `temperature: optional number or null` - 使用的采样温度,介于 0 和 2 之间。较高的值(如 0.8)会使输出更加随机,而较低的值(如 0.2)会使输出更加集中和确定。 + 使用的采样温度,介于 0 到 2 之间。较高的值(例如 0.8)会使输出更加随机,而较低的值(例如 0.2)会使输出更加聚焦和确定性。 - 我们通常建议修改此参数或 top_p, `top_p` 但不要同时修改两者。 + 我们通常建议更改此参数或 `top_p` ,但不要同时更改两者。 - `top_p: optional number or null` - 一种替代温度采样的方法,称为核采样(nucleus sampling),模型只考虑具有 top_p 概率质量的 token。因此 0.1 表示仅考虑构成前 10% 概率质量的 token。 + 一种采用温度采样的替代方法,称为核采样(nucleus sampling),模型会考虑具有 top_p 概率质量的令牌结果。因此 0.1 表示仅考虑构成前 10% 概率质量的令牌。 - 我们通常建议修改此参数或 top_p, `temperature` 但不要同时修改两者。 + 我们通常建议更改此参数或 `temperature` ,但不要同时更改两者。 - `user: optional string` @@ -162,7 +162,7 @@ - `Completion object { id, choices, created, 4 more }` - 表示来自 API 的补全响应。注意:流式和非流式响应对象具有相同的结构(与 chat 端点不同)。 + 表示来自 API 的补全响应。注意:流式和非流式响应对象共享相同的结构(与 chat 端点不同)。 - `id: string` @@ -170,13 +170,13 @@ - `choices: array of CompletionChoice` - 模型针对输入提示生成的补全选项列表。 + 模型为输入提示生成的补全选项列表。 - `finish_reason: "stop" or "length" or "content_filter"` - 模型停止生成 token 的原因。该值为 `stop` :如果模型遇到自然停止点或提供的停止序列, - `length` :如果达到了请求中指定的最大 token 数, - :或者 `content_filter` :如果内容因我们内容过滤器的标记而被省略。 + 模型停止生成 token 的原因。这将 `stop` 如果模型遇到自然停止点或提供了停止序列, + `length` 如果达到了请求中指定的最大 token 数, + 或 `content_filter` 如果内容由于我们的内容过滤器的标记而被省略。 - `"stop"` @@ -200,7 +200,7 @@ - `created: number` - 补全创建时的 Unix 时间戳(以秒为单位)。 + 补全创建时的 Unix 时间戳(秒)。 - `model: string` @@ -214,9 +214,9 @@ - `system_fingerprint: optional string` - 该指纹表示模型运行所用的后端配置。 + 此指纹表示模型运行所用的后端配置。 - 可与 `seed` 请求参数配合使用,以了解后端何时发生了可能影响确定性的更改。 + 可以与 `seed` 请求参数结合使用,以了解后端何时发生了可能影响确定性的更改。 - `usage: optional CompletionUsage` @@ -224,11 +224,11 @@ - `completion_tokens: number` - 生成的补全中的 token 数量。 + 生成的补全中的 token 数。 - `prompt_tokens: number` - 提示中的 token 数量。 + 提示中的 token 数。 - `total_tokens: number` @@ -236,32 +236,36 @@ - `completion_tokens_details: optional object { accepted_prediction_tokens, audio_tokens, reasoning_tokens, 2 more }` - 补全中使用的 token 明细。 + 补全中使用的 token 细分。 - `accepted_prediction_tokens: optional number` - 当使用 Predicted Outputs 时, + 使用 Predicted Outputs 时,中的 token 数 completion 中出现的预测 token。 - `audio_tokens: optional number` - 由模型生成的音频输入 token。 + 模型生成的音频输入 token。 - `reasoning_tokens: optional number` - 模型用于推理生成的 token。 + 模型为推理生成的 token。 - `rejected_prediction_tokens: optional number` - 当使用 Predicted Outputs 时, - completion 中未出现的预测 token。不过,与 - 推理 token 一样,这些 token 仍会计入用于计费、 - 输出和上下文窗口限制的总 completion token 中。 + 使用 Predicted Outputs 时,中的 token 数 + completion 中未出现的预测 token。但与 + 推理 token 一样,这些 token 仍会计入 + 用于计费、输出和上下文窗口的 completion token 总数 限制。 - `text_tokens: optional number` - 由模型生成的文本输出 token。 + 模型生成的文本输出 token。 + + - `compute_units: optional number or null` + + 请求的计算单元。目前在可用时为 null。 - `prompt_tokens_details: optional object { audio_tokens, cache_write_tokens, cached_tokens, 2 more }` @@ -269,23 +273,23 @@ - `audio_tokens: optional number` - 提示词中存在的音频输入 token。 + 提示词中出现的音频输入 token。 - `cache_write_tokens: optional number` - 写入缓存的未调整的提示词 token 数量。 + 写入缓存的未调整的提示词 token 数。 - `cached_tokens: optional number` - 提示词中存在的已缓存 token。 + 提示词中出现的已缓存 token。 - `image_tokens: optional number` - 提示词中存在的图像输入 token。 + 提示词中出现的图像输入 token。 - `text_tokens: optional number` - 提示词中存在的文本输入 token。 + 提示词中出现的文本输入 token。 ### 示例 @@ -348,6 +352,7 @@ curl https://api.openai.com/v1/completions \ "rejected_prediction_tokens": 0, "text_tokens": 0 }, + "compute_units": 0, "prompt_tokens_details": { "audio_tokens": 0, "cache_write_tokens": 0, @@ -359,7 +364,7 @@ curl https://api.openai.com/v1/completions \ } ``` -### 无流式 +### 无流式传输 ```http curl https://api.openai.com/v1/completions \ @@ -398,7 +403,7 @@ curl https://api.openai.com/v1/completions \ } ``` -### 流式 +### 流式传输 ```http curl https://api.openai.com/v1/completions \ diff --git a/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md b/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md index 61ccedb..2f0b6f8 100644 --- a/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md +++ b/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete.md @@ -1,9 +1,9 @@ -# 组织用户角色 — 删除 +# Organization Users Roles — Delete -> 如需查看完整的文档索引,请参见 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后添加 `.md` 来获取。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾附加 `.md` 即可获取该页面的 Markdown 版本。 -OpenAI API 端点方法参考。 +OpenAI API endpoint 方法参考。 -规范参考 URL: https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete +规范参考 URL: https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/delete -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md b/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md index 9b2d3ed..8256388 100644 --- a/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md +++ b/docs/zh/api/reference/resources/organization/subresources/users/subresources/roles/methods/list.md @@ -1,9 +1,9 @@ # 组织用户角色 — 列表 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt). 可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 OpenAI API 端点方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/organization/subresources/users/subresources/roles/methods/list -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects.md b/docs/zh/api/reference/resources/projects.md index 9a64cde..0f2f5a4 100644 --- a/docs/zh/api/reference/resources/projects.md +++ b/docs/zh/api/reference/resources/projects.md @@ -1,9 +1,9 @@ -# 项目 +# Projects -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 OpenAI API 端点参考。 -标准参考 URL: https://developers.openai.com/api/reference/resources/projects +规范参考 URL: https://developers.openai.com/api/reference/resources/projects -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/groups.md b/docs/zh/api/reference/resources/projects/subresources/groups.md index 5821e0b..f2e7c6f 100644 --- a/docs/zh/api/reference/resources/projects/subresources/groups.md +++ b/docs/zh/api/reference/resources/projects/subresources/groups.md @@ -1,9 +1,9 @@ -# 项目组 +# Projects Groups -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。通过附加 `.md` 到页面 URL,可获取文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 OpenAI API 端点参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/groups -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md b/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md index 301cc86..dc88813 100644 --- a/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md +++ b/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create.md @@ -1,9 +1,9 @@ -# 项目组角色 — 创建 +# 项目 组 角色 — 创建 -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取相应文档页面的 Markdown 版本。 OpenAI API 端点方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/create -此 API 参考页面由 Stainless 生成。 \ No newline at end of file +本 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md b/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md index c034dee..e58eea7 100644 --- a/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md +++ b/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete.md @@ -1,9 +1,9 @@ -# 项目 群组 角色 — 删除 +# Projects Groups Roles — Delete > 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 OpenAI API 端点方法参考。 -规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete +规范的参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/delete -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md b/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md index eebfca7..f6f939b 100644 --- a/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md +++ b/docs/zh/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list.md @@ -1,8 +1,8 @@ -# 项目 分组 角色 — 列表 +# Projects Groups Roles — List -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 -OpenAI API 端点方法参考。 +OpenAI API endpoint 方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/groups/subresources/roles/methods/list diff --git a/docs/zh/api/reference/resources/projects/subresources/roles/methods/create.md b/docs/zh/api/reference/resources/projects/subresources/roles/methods/create.md index 0f5debc..ba5c902 100644 --- a/docs/zh/api/reference/resources/projects/subresources/roles/methods/create.md +++ b/docs/zh/api/reference/resources/projects/subresources/roles/methods/create.md @@ -1,9 +1,9 @@ -# 项目角色 — 创建 +# Projects 角色 — Create -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。通过在页面 URL 后追加 `.md` 即可获取文档页面的 Markdown 版本。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 OpenAI API 端点方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/create -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/roles/methods/delete.md b/docs/zh/api/reference/resources/projects/subresources/roles/methods/delete.md index 09cea31..c77dbbe 100644 --- a/docs/zh/api/reference/resources/projects/subresources/roles/methods/delete.md +++ b/docs/zh/api/reference/resources/projects/subresources/roles/methods/delete.md @@ -1,9 +1,9 @@ -# 项目角色 — 删除 +# Projects Roles — Delete -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 OpenAI API 端点方法参考。 -规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/delete +规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/delete -此 API 参考页面由 Stainless 生成。 \ No newline at end of file +本 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/roles/methods/list.md b/docs/zh/api/reference/resources/projects/subresources/roles/methods/list.md index d89c401..7180961 100644 --- a/docs/zh/api/reference/resources/projects/subresources/roles/methods/list.md +++ b/docs/zh/api/reference/resources/projects/subresources/roles/methods/list.md @@ -1,9 +1,9 @@ -# 项目角色 — 列表 +# Projects Roles — 列表 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取文档页面的 Markdown 版本。 OpenAI API 端点方法参考。 -标准参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/list +规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/list -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/roles/methods/update.md b/docs/zh/api/reference/resources/projects/subresources/roles/methods/update.md index 64ffd22..e71bf2b 100644 --- a/docs/zh/api/reference/resources/projects/subresources/roles/methods/update.md +++ b/docs/zh/api/reference/resources/projects/subresources/roles/methods/update.md @@ -1,9 +1,9 @@ -# 项目角色 — 更新 +# Projects Roles — Update -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 获取。 +> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。通过在页面 URL 后追加 `.md` 可获取该页面的 Markdown 版本。 OpenAI API 端点方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/roles/methods/update -此 API 参考页面由 Stainless 生成。 \ No newline at end of file +本 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/users.md b/docs/zh/api/reference/resources/projects/subresources/users.md index 229734f..d2a8a47 100644 --- a/docs/zh/api/reference/resources/projects/subresources/users.md +++ b/docs/zh/api/reference/resources/projects/subresources/users.md @@ -1,9 +1,9 @@ -# 项目 用户 +# Projects Users -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 获取文档页面的 Markdown 版本。 OpenAI API 端点参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/users -此 API 参考页面由 Stainless 生成。 \ No newline at end of file +本 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md b/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md index bc9ce96..a04879d 100644 --- a/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md +++ b/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/create.md @@ -1,6 +1,6 @@ -# 项目 用户 角色 — 创建 +# Projects Users Roles — 创建 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 OpenAI API 端点方法参考。 diff --git a/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md b/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md index c6c1def..d48d193 100644 --- a/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md +++ b/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete.md @@ -1,9 +1,9 @@ -# 项目 用户 角色 — 删除 +# Projects Users Roles — Delete -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 OpenAI API 端点方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/delete -本 API 参考页面由 Stainless 生成。 \ No newline at end of file +此 API 参考页面由Stainless生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md b/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md index 82cd9d0..9fd67a8 100644 --- a/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md +++ b/docs/zh/api/reference/resources/projects/subresources/users/subresources/roles/methods/list.md @@ -1,9 +1,9 @@ -# 项目 用户 角色 — 列表 +# Projects Users Roles — 列表 -> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加以下内容即可获取该页面的 Markdown 版本: `.md` 即可访问相应页面。 OpenAI API 端点方法参考。 规范参考 URL: https://developers.openai.com/api/reference/resources/projects/subresources/users/subresources/roles/methods/list -此 API 参考页面由 Stainless 生成。 \ No newline at end of file +本 API 参考页面由 Stainless 生成。 \ No newline at end of file diff --git a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/create.md b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/create.md index 05f4841..9a29739 100644 --- a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/create.md +++ b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/create.md @@ -1,10 +1,10 @@ -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 ## 创建调用 **post** `/realtime/calls` -通过 WebRTC 新建一个 Realtime API 调用,并接收完成对等连接所需的 SDP 应答 +通过 WebRTC 创建新的 Realtime API 调用,并接收完成对等连接所需的 SDP 应答 。 ### 示例 diff --git a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/hangup.md b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/hangup.md index d8aa58a..8814765 100644 --- a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/hangup.md +++ b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/hangup.md @@ -1,10 +1,10 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。可在页面 URL 末尾追加以下内容来获取该页面的 Markdown 版本: `.md` 。 ## 挂断通话 **post** `/realtime/calls/{call_id}/hangup` -结束一个正在进行的 Realtime API 调用,无论是通过 SIP 还是 +结束一次活动的 Realtime API 调用,无论该调用是通过 SIP 还是 WebRTC 发起的。 ### 路径参数 diff --git a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/refer.md b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/refer.md index fad23e2..fd7dec8 100644 --- a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/refer.md +++ b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/refer.md @@ -1,10 +1,10 @@ -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。通过追加 `.md` 到页面 URL,可获取各文档页的 Markdown 版本。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -## 参考资料调用 +## Refer call **post** `/realtime/calls/{call_id}/refer` -使用 SIP REFER 动词将活动中的 SIP 通话转接到新目的地。 +使用 SIP REFER 动词将当前通话转接到新目标。 ### 路径参数 @@ -14,7 +14,7 @@ - `target_uri: string` - 应出现在 SIP Refer-To 头部中的 URI。支持如下值 + 应出现在 SIP Refer-To 头中的 URI。支持类似 `tel:+14155550123` 或 `sip:agent@example.com`. ### 示例 diff --git a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/reject.md b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/reject.md index a063170..fb971ff 100644 --- a/docs/zh/api/reference/resources/realtime/subresources/calls/methods/reject.md +++ b/docs/zh/api/reference/resources/realtime/subresources/calls/methods/reject.md @@ -1,10 +1,10 @@ -> 关于完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 获取该页面的 Markdown 版本。 -## 拒绝调用 +## 拒绝呼叫 **post** `/realtime/calls/{call_id}/reject` -通过向调用方返回一个 SIP 状态码来拒绝传入的 SIP 呼叫。 +通过向来电方返回 SIP 状态码来拒绝接入的 SIP 通话。 ### 路径参数 @@ -14,8 +14,8 @@ - `status_code: optional number` - 要发送回调用方的 SIP 响应代码。默认为 `603` (拒绝) - (省略时)。 + 回传给呼叫方的 SIP 响应码。默认值为 `603` (Decline) + ,若省略则使用默认值。 ### 示例 diff --git a/docs/zh/api/reference/resources/responses/methods/delete.md b/docs/zh/api/reference/resources/responses/methods/delete.md index 35a5a75..e159e72 100644 --- a/docs/zh/api/reference/resources/responses/methods/delete.md +++ b/docs/zh/api/reference/resources/responses/methods/delete.md @@ -1,8 +1,8 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参见 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本文档。 ## 删除模型响应 -**删除** `/responses/{response_id}` +**delete** `/responses/{response_id}` 删除具有给定 ID 的模型响应。 diff --git a/docs/zh/api/reference/resources/uploads.md b/docs/zh/api/reference/resources/uploads.md index d0bd15e..f5ba847 100644 --- a/docs/zh/api/reference/resources/uploads.md +++ b/docs/zh/api/reference/resources/uploads.md @@ -1,24 +1,24 @@ -# 上传 +# Uploads -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参见 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取对应文档页面的 Markdown 版本。 ## 取消上传 **post** `/uploads/{upload_id}/cancel` -取消上传。上传被取消后,不得再添加任何部分。 +取消上传。上传被取消后,不能再添加任何 Part。 -返回上传对象及其状态 `cancelled`. +返回包含以下状态的 Upload 对象 `cancelled`. ### 路径参数 - `upload_id: string` -### 返回 +### 返回值 - `Upload object { id, bytes, created_at, 6 more }` - Upload 对象可以接受以 Parts 形式提供的字节块。 + Upload 对象可以通过 Parts 的形式接收字节分块。 - `id: string` @@ -26,23 +26,23 @@ - `bytes: number` - 要上传的预期字节数。 + 预期要上传的字节数。 - `created_at: number` - Upload 创建时的 Unix 时间戳(秒)。 + Upload 创建时的 Unix 时间戳(以秒为单位)。 - `expires_at: number` - Upload 过期时的 Unix 时间戳(秒)。 + Upload 过期时的 Unix 时间戳(以秒为单位)。 - `filename: string` - 要上传的文件名称。 + 要上传的文件名。 - `purpose: string` - 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 以了解可接受的值。 + 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 - `status: "pending" or "completed" or "cancelled" or "expired"` @@ -58,7 +58,7 @@ - `file: optional FileObject or null` - 该 `File` 对象表示已上传至 OpenAI 的文档。 + 该 `File` 对象表示已上传到 OpenAI 的文档。 - `id: string` @@ -66,15 +66,15 @@ - `bytes: number` - 文件的大小(字节)。 + 文件大小(以字节为单位)。 - `created_at: number` - 文件创建时的 Unix 时间戳(秒)。 + 文件创建时的 Unix 时间戳(以秒为单位)。 - `filename: string` - 文件名称。 + 文件名。 - `object: "file"` @@ -84,7 +84,7 @@ - `purpose: "assistants" or "assistants_output" or "batch" or 5 more` - 文件的预期用途。支持的值有 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. + 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. - `"assistants"` @@ -104,7 +104,7 @@ - `status: "uploaded" or "processed" or "error"` - 已弃用。文件的当前状态,可以为 `uploaded`, `processed`,或 `error`. + 已弃用。文件的当前状态,可以是 `uploaded`, `processed`,或 `error`. - `"uploaded"` @@ -114,11 +114,11 @@ - `expires_at: optional number` - 文件过期时的 Unix 时间戳(秒)。 + 文件过期时的 Unix 时间戳(以秒为单位)。 - `status_details: optional string` - 已弃用。有关微调训练文件验证失败原因的详细信息,请参阅 `error` 字段上的 `fine_tuning.job`. + 已弃用。有关微调训练文件验证失败的原因详情,请参阅 `error` 字段,位于 `fine_tuning.job`. - `object: optional "upload"` @@ -183,36 +183,36 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel ## 完成上传 -**发布** `/uploads/{upload_id}/complete` +**post** `/uploads/{upload_id}/complete` -完成 [上传](/docs/api-reference/uploads/object). +完成 [Upload](/docs/api-reference/uploads/object). -在返回的上传对象中,有一个嵌套的 [文件](/docs/api-reference/files/object) 对象,可直接用于平台的其余部分。 +在返回的 Upload 对象中,嵌套了一个 [File](/docs/api-reference/files/object) 对象,可直接在平台其他部分使用。 -你可以通过传入零件ID的有序列表来指定零件的顺序。 +你可以通过传入一个有序的 Part ID 列表来指定 Parts 的顺序。 -完成时上传的字节数必须与创建上传对象时最初指定的字节数匹配。上传完成后不得添加任何零件。 -返回带有状态的上传对象 `completed`,包括一个额外的 `file` 属性,其中包含所创建的可使用的文件对象。 +完成时上传的字节数必须与最初创建 Upload 对象时指定的字节数一致。Upload 完成之后不能再添加任何 Part。 +返回状态为 `completed`,的 Upload 对象,其中包含一个额外的 `file` 属性,其中包含所创建的可用 File 对象。 ### 路径参数 - `upload_id: string` -### 请求体参数 +### Body Parameters - `part_ids: array of string` - Part ID 的有序列表。 + 有序的 Part ID 列表。 - `md5: optional string` - 文件内容的可选 md5 校验和,用于验证上传的字节是否与你预期的一致。 + 用于验证上传字节是否符合预期的文件内容的可选 md5 校验和。 -### 返回 +### 返回值 - `Upload object { id, bytes, created_at, 6 more }` - Upload 对象可以以 Parts 的形式接受字节块。 + Upload 对象可以通过 Parts 的形式接收字节分块。 - `id: string` @@ -220,7 +220,7 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `bytes: number` - 拟上传的字节数。 + 预期要上传的字节数。 - `created_at: number` @@ -232,11 +232,11 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `filename: string` - 要上传的文件的名称。 + 要上传的文件名。 - `purpose: string` - 文件的预期用途。 [请参阅此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 + 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 - `status: "pending" or "completed" or "cancelled" or "expired"` @@ -252,7 +252,7 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `file: optional FileObject or null` - 该 `File` 对象表示已上传至 OpenAI 的文档。 + 该 `File` 对象表示已上传到 OpenAI 的文档。 - `id: string` @@ -260,7 +260,7 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `bytes: number` - 文件的大小(以字节为单位)。 + 文件大小(以字节为单位)。 - `created_at: number` @@ -268,7 +268,7 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `filename: string` - 文件的名称。 + 文件名。 - `object: "file"` @@ -278,7 +278,7 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `purpose: "assistants" or "assistants_output" or "batch" or 5 more` - 文件的预期用途。支持的值有 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,和 `user_data`. + 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. - `"assistants"` @@ -312,7 +312,7 @@ curl https://api.openai.com/v1/uploads/upload_abc123/cancel - `status_details: optional string` - 已弃用。有关微调训练文件验证失败原因的详细信息,请参阅 `error` 字段上的 `fine_tuning.job`. + 已弃用。有关微调训练文件验证失败的原因详情,请参阅 `error` 字段,位于 `fine_tuning.job`. - `object: optional "upload"` @@ -396,48 +396,48 @@ curl https://api.openai.com/v1/uploads/upload_abc123/complete **post** `/uploads` -创建一个中间 [Upload](/docs/api-reference/uploads/object) 对象 -,你可以向其中添加 [Parts](/docs/api-reference/uploads/part-object) 。 -目前,一个 Upload 最多可接受总共 8 GB 的数据,并在创建后 -一小时过期。 +Creates an intermediate [Upload](/docs/api-reference/uploads/object) object +你可以向其添加 [Parts](/docs/api-reference/uploads/part-object) 。 +目前,一个 Upload 总体最多接受 8 GB,并且在你创建之后 +一小时后过期。 -一旦你完成 Upload,我们将创建一个 -[File](/docs/api-reference/files/object) 对象,其中包含你上传的所有 parts -。这个 File 可以在我们平台的其余部分中像普通的 -File 对象一样使用。 +完成 Upload 后,我们将创建一个 +[File](/docs/api-reference/files/object) 对象,其中包含你上传的所有 part +。此 File 可在我们平台的其他部分中作为常规 +File 对象使用。 对于某些 `purpose` 值,必须指定正确的 `mime_type` 。 -请参阅相关文档以了解 -[适用于你的用例的支持 MIME 类型](/docs/assistants/tools/file-search#supported-files). +请参阅相关文档了解你的用例所支持的 +[MIME 类型](/docs/assistants/tools/file-search#supported-files). -关于每种用途的正确文件扩展名指南,请 -请遵循 [创建 -文件](/docs/api-reference/files/create). +有关每种用途的正确文件扩展名指南,请 +参阅关于如何创建 [的文档 +File](/docs/api-reference/files/create). -返回带有状态的 Upload 对象 `pending`. +返回包含以下状态的 Upload 对象 `pending`. -### 请求体参数 +### Body Parameters - `bytes: number` - 你正在上传的文件中的字节数。 + 你正在上传的文件的字节数。 - `filename: string` - 要上传的文件名称。 + 要上传的文件名。 - `mime_type: string` 文件的 MIME 类型。 - 此类型必须属于你的文件用途所支持的 MIME 类型。请参阅 - 助手和视觉支持的 MIME 类型。 + 该值必须属于你文件用途所支持的 MIME 类型范围。参见 + 智能体与视觉所支持的 MIME 类型。 - `purpose: "assistants" or "batch" or "fine-tune" or "vision"` 上传文件的预期用途。 - 请参阅 [关于文件用途的文档 + 参见 [关于 File 用途](/docs/api-reference/files/create#files-create-purpose). - `"assistants"` @@ -450,23 +450,23 @@ File 对象一样使用。 - `expires_after: optional object { anchor, seconds }` - 文件的过期策略。默认情况下,带有 `purpose=batch` 的文件在 30 天后过期,所有其他文件会一直保留,直到手动删除。 + 文件的过期策略。默认情况下,使用 `purpose=batch` 的文件会在 30 天后过期,其他文件则会一直保留,直到被手动删除。 - `anchor: "created_at"` - 过期策略开始生效的锚定时间戳。支持的锚点: `created_at`. + 过期策略生效的锚点时间戳。支持的锚点包括: `created_at`. - `"created_at"` - `seconds: number` - 文件在锚定时间之后多少秒过期。必须介于 3600(1 小时)和 2592000(30 天)之间。 + 文件将在锚点时间之后过期的秒数。必须介于 3600(1 小时)到 2592000(30 天)之间。 -### 返回 +### 返回值 - `Upload object { id, bytes, created_at, 6 more }` - Upload 对象可以接受以 Parts 形式提供的字节块。 + Upload 对象可以通过 Parts 的形式接收字节分块。 - `id: string` @@ -474,7 +474,7 @@ File 对象一样使用。 - `bytes: number` - 计划上传的字节数。 + 预期要上传的字节数。 - `created_at: number` @@ -486,11 +486,11 @@ File 对象一样使用。 - `filename: string` - 要上传的文件的名称。 + 要上传的文件名。 - `purpose: string` - 文件的预期用途。 [请参阅此处](/docs/api-reference/files/object#files/object-purpose) 以了解可接受的值。 + 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 - `status: "pending" or "completed" or "cancelled" or "expired"` @@ -514,7 +514,7 @@ File 对象一样使用。 - `bytes: number` - 文件的大小,以字节为单位。 + 文件大小(以字节为单位)。 - `created_at: number` @@ -522,7 +522,7 @@ File 对象一样使用。 - `filename: string` - 文件的名称。 + 文件名。 - `object: "file"` @@ -532,7 +532,7 @@ File 对象一样使用。 - `purpose: "assistants" or "assistants_output" or "batch" or 5 more` - 文件的预期用途。支持的值有 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,和 `user_data`. + 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. - `"assistants"` @@ -562,15 +562,15 @@ File 对象一样使用。 - `expires_at: optional number` - 文件过期时的 Unix 时间戳(秒)。 + 文件过期时的 Unix 时间戳(以秒为单位)。 - `status_details: optional string` - 已弃用。有关微调训练文件验证失败原因的详细信息,请参阅 `error` 字段,位于 `fine_tuning.job`. + 已弃用。有关微调训练文件验证失败的原因详情,请参阅 `error` 字段,位于 `fine_tuning.job`. - `object: optional "upload"` - 对象类型,始终为 “upload”。 + 对象类型,始终为 "upload"。 - `"upload"` @@ -646,13 +646,13 @@ curl https://api.openai.com/v1/uploads \ } ``` -## 域类型 +## Domain Types -### 上传 +### Upload - `Upload object { id, bytes, created_at, 6 more }` - Upload 对象可以接受以 Parts 形式出现的字节块。 + Upload 对象可以通过 Parts 的形式接收字节分块。 - `id: string` @@ -660,7 +660,7 @@ curl https://api.openai.com/v1/uploads \ - `bytes: number` - 预期上传的字节数。 + 预期要上传的字节数。 - `created_at: number` @@ -672,11 +672,11 @@ curl https://api.openai.com/v1/uploads \ - `filename: string` - 要上传的文件的名称。 + 要上传的文件名。 - `purpose: string` - 文件的预期用途。 [请参阅此处](/docs/api-reference/files/object#files/object-purpose) 以了解可接受的值。 + 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 - `status: "pending" or "completed" or "cancelled" or "expired"` @@ -700,7 +700,7 @@ curl https://api.openai.com/v1/uploads \ - `bytes: number` - 文件的大小,以字节为单位。 + 文件大小(以字节为单位)。 - `created_at: number` @@ -708,7 +708,7 @@ curl https://api.openai.com/v1/uploads \ - `filename: string` - 文件的名称。 + 文件名。 - `object: "file"` @@ -718,7 +718,7 @@ curl https://api.openai.com/v1/uploads \ - `purpose: "assistants" or "assistants_output" or "batch" or 5 more` - 文件的预期用途。支持的值有 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. + 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. - `"assistants"` @@ -748,11 +748,11 @@ curl https://api.openai.com/v1/uploads \ - `expires_at: optional number` - 文件过期时的 Unix 时间戳(秒)。 + 文件过期时的 Unix 时间戳(以秒为单位)。 - `status_details: optional string` - 已弃用。有关微调训练文件验证失败的详细原因,请参阅 `error` 字段,位于 `fine_tuning.job`. + 已弃用。有关微调训练文件验证失败的原因详情,请参阅 `error` 字段,位于 `fine_tuning.job`. - `object: optional "upload"` @@ -760,35 +760,35 @@ curl https://api.openai.com/v1/uploads \ - `"upload"` -# 部件 +# Parts -## 添加上传部件 +## Add upload part **post** `/uploads/{upload_id}/parts` -向 [Part](/docs/api-reference/uploads/part-object) 添加 [Upload](/docs/api-reference/uploads/object) 对象。Part 表示你试图上传的文件中的字节块。 +向某个 [Part](/docs/api-reference/uploads/part-object) 对象添加一个 Part [Upload](/docs/api-reference/uploads/object) 。Part 表示你正在尝试上传的文件中的一段字节。 -每个 Part 最大可为 64 MB,你可以添加 Parts,直到达到 Upload 的最大值 8 GB。 +每个 Part 的大小上限为 64 MB,你可以不断添加 Part,直到达到 8 GB 的上传上限。 -可以并行添加多个 Parts。你可以在 [完成 Upload](/docs/api-reference/uploads/complete). +可以并行添加多个 Part。你可以在 [完成上传](/docs/api-reference/uploads/complete). ### 路径参数 - `upload_id: string` -### 返回 +### 返回值 - `UploadPart object { id, created_at, object, upload_id }` - 上传部分(Part)代表我们可以添加到上传对象(Upload)中的字节块。 + upload Part 表示我们可以添加到 Upload 对象的一个字节块。 - `id: string` - 上传部分(Part)的唯一标识符,可在 API 端点中引用。 + upload Part 的唯一标识符,可在 API 端点中引用。 - `created_at: number` - 创建该部分(Part)时的 Unix 时间戳(以秒为单位)。 + Part 创建时的 Unix 时间戳(以秒为单位)。 - `object: "upload.part"` @@ -798,7 +798,7 @@ curl https://api.openai.com/v1/uploads \ - `upload_id: string` - 该部分(Part)被添加到的上传对象(Upload)的 ID。 + 此 Part 所添加到的 Upload 对象的 ID。 ### 示例 @@ -838,21 +838,21 @@ curl https://api.openai.com/v1/uploads/upload_abc123/parts } ``` -## 域类型 +## Domain Types -### 上传部分 +### Upload Part - `UploadPart object { id, created_at, object, upload_id }` - 上传部分(Part)表示我们可以添加到上传对象(Upload)中的一块字节数据。 + upload Part 表示我们可以添加到 Upload 对象的一个字节块。 - `id: string` - 上传部分(Part)的唯一标识符,可在 API 端点中引用。 + upload Part 的唯一标识符,可在 API 端点中引用。 - `created_at: number` - 该部分创建时的 Unix 时间戳(以秒为单位)。 + Part 创建时的 Unix 时间戳(以秒为单位)。 - `object: "upload.part"` @@ -862,4 +862,4 @@ curl https://api.openai.com/v1/uploads/upload_abc123/parts - `upload_id: string` - 此部分被添加到的上传对象(Upload)的 ID。 + 此 Part 所添加到的 Upload 对象的 ID。 diff --git a/docs/zh/api/reference/resources/uploads/methods/cancel.md b/docs/zh/api/reference/resources/uploads/methods/cancel.md index 795c3e7..e16d77e 100644 --- a/docs/zh/api/reference/resources/uploads/methods/cancel.md +++ b/docs/zh/api/reference/resources/uploads/methods/cancel.md @@ -1,12 +1,12 @@ -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取 Markdown 版本的文档页面。 ## 取消上传 **post** `/uploads/{upload_id}/cancel` -取消上传。上传被取消后,不得再添加任何部分。 +取消该 Upload。Upload 被取消后,不可再添加任何 Part。 -返回带有状态的上传对象 `cancelled`. +返回带有状态的 Upload 对象 `cancelled`. ### 路径参数 @@ -16,15 +16,15 @@ - `Upload object { id, bytes, created_at, 6 more }` - Upload 对象可以接受 Parts 形式的字节块。 + Upload 对象可以以 Parts 的形式接收字节数据块。 - `id: string` - Upload 的唯一标识符,可在 API 端点中引用。 + Upload 的唯一标识符,可以在 API 端点中引用。 - `bytes: number` - 要上传的预期字节数。 + 预期上传的字节数。 - `created_at: number` @@ -40,7 +40,7 @@ - `purpose: string` - 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 获取可接受的值。 + 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 - `status: "pending" or "completed" or "cancelled" or "expired"` @@ -56,15 +56,15 @@ - `file: optional FileObject or null` - 该 `File` 对象表示已上传至 OpenAI 的文档。 + 该 `File` 对象表示已上传到 OpenAI 的文档。 - `id: string` - 文件标识符,可在 API 端点中引用。 + 文件标识符,可以在 API 端点中引用。 - `bytes: number` - 文件的大小,以字节为单位。 + 文件的大小(以字节为单位)。 - `created_at: number` @@ -82,7 +82,7 @@ - `purpose: "assistants" or "assistants_output" or "batch" or 5 more` - 文件的预期用途。支持的值有 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. + 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. - `"assistants"` @@ -102,7 +102,7 @@ - `status: "uploaded" or "processed" or "error"` - 已弃用。文件的当前状态,可以是 `uploaded`, `processed`,或 `error`. + 已弃用。文件的当前状态,可能为 `uploaded`, `processed`,或 `error`. - `"uploaded"` @@ -112,11 +112,11 @@ - `expires_at: optional number` - 文件过期时的 Unix 时间戳(秒)。 + 文件过期时的 Unix 时间戳(以秒为单位)。 - `status_details: optional string` - 已弃用。有关微调训练文件验证失败原因的详细信息,请参阅 `error` 上的 `fine_tuning.job`. + 已弃用。有关微调训练文件验证失败的原因详情,请参阅 `error` 字段位于 `fine_tuning.job`. - `object: optional "upload"` diff --git a/docs/zh/api/reference/resources/uploads/methods/create.md b/docs/zh/api/reference/resources/uploads/methods/create.md index bd9e48e..b0f1bd3 100644 --- a/docs/zh/api/reference/resources/uploads/methods/create.md +++ b/docs/zh/api/reference/resources/uploads/methods/create.md @@ -1,34 +1,34 @@ -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 -## 创建上传 +## Create upload **post** `/uploads` -创建中间 [Upload](/docs/api-reference/uploads/object) 对象 -,你可以向其中添加 [Parts](/docs/api-reference/uploads/part-object) 。当前,一个 Upload 总共最多可接受 8 GB 内容,并在。 -你创建后的一 -小时后过期。 +创建一个中间 [Upload](/docs/api-reference/uploads/object) 对象 +,你可以向其中添加 [Parts](/docs/api-reference/uploads/part-object) 。 +目前,一个 Upload 最多接受总计 8 GB 的内容,并在创建 +一小时后过期。 -一旦你完成 Upload,我们将创建一个 -[File](/docs/api-reference/files/object) 对象,其中包含你上传的所有 -部分。该 File 可像普通 -File 对象一样在我们平台的其余部分使用。 +完成 Upload 后,我们会创建一个包含你上传的所有 part 的 +[File](/docs/api-reference/files/object) 对象。该 File 可在我们平台的其他地方作为常规的 +File 对象在平台其余部分中使用。 +File 对象。 -对于某些 `purpose` 值,必须指定正确的 `mime_type` 。请参阅文档了解。 -你的用例所支持的 -[MIME 类型](/docs/assistants/tools/file-search#supported-files). +对于某些 `purpose` 值,必须指定正确的 `mime_type` 。 +请参阅针对你使用场景的 +[支持的 MIME 类型文档](/docs/assistants/tools/file-search#supported-files). -有关每种用途的正确文件扩展名的指导,请 -按照文档操作 [创建 -文件](/docs/api-reference/files/create). +有关每个用途的正确文件扩展名指南,请 +按照相关文档进行 [创建一个 +File](/docs/api-reference/files/create). -返回包含状态的 Upload 对象 `pending`. +返回带有状态信息的 Upload 对象 `pending`. ### 请求体参数 - `bytes: number` - 你正在上传的文件中的字节数。 + 你要上传的文件的字节数。 - `filename: string` @@ -38,15 +38,15 @@ File 对象一样在我们平台的其余部分使用。 文件的 MIME 类型。 - 这必须属于你的文件用途所支持的 MIME 类型。请参阅 - 适用于助手和视觉的受支持 MIME 类型。 + 此值必须属于你的文件用途所支持的 MIME 类型范围。参见 + 助手中支持的 MIME 类型和视觉功能。 - `purpose: "assistants" or "batch" or "fine-tune" or "vision"` 上传文件的预期用途。 - 请参阅 [关于 File 的文档 - 用途](/docs/api-reference/files/create#files-create-purpose). + 请参阅 File(文件)的 [documentation on File + purposes](/docs/api-reference/files/create#files-create-purpose). - `"assistants"` @@ -58,23 +58,23 @@ File 对象一样在我们平台的其余部分使用。 - `expires_after: optional object { anchor, seconds }` - 文件的过期策略。默认情况下, `purpose=batch` 在 30 天后过期,所有其他文件则会一直保留,直到手动删除。 + 文件的过期策略。默认情况下,带有 `purpose=batch` 的过期时间为 30 天,其他所有文件会一直保留直到被手动删除。 - `anchor: "created_at"` - 过期策略适用的锚点时间戳。支持的锚点: `created_at`. + 过期策略生效的锚定时间戳。支持的锚点: `created_at`. - `"created_at"` - `seconds: number` - 锚点时间之后文件过期的秒数。必须在 3600(1 小时)到 2592000(30 天)之间。 + 文件将在锚定时间之后过期的秒数。必须介于 3600(1 小时)和 2592000(30 天)之间。 -### 返回 +### 返回值 - `Upload object { id, bytes, created_at, 6 more }` - Upload 对象可以接受以 Parts 形式提供的字节块。 + Upload 对象可以以 Parts 的形式接收字节分块。 - `id: string` @@ -82,7 +82,7 @@ File 对象一样在我们平台的其余部分使用。 - `bytes: number` - 要上传的预期字节数。 + 预期上传的字节数。 - `created_at: number` @@ -94,11 +94,11 @@ File 对象一样在我们平台的其余部分使用。 - `filename: string` - 要上传的文件的名称。 + 要上传的文件名。 - `purpose: string` - 文件的预期用途。 [请参阅此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 + 文件的预期用途。 [请参考此处](/docs/api-reference/files/object#files/object-purpose) 了解可接受的值。 - `status: "pending" or "completed" or "cancelled" or "expired"` @@ -140,7 +140,7 @@ File 对象一样在我们平台的其余部分使用。 - `purpose: "assistants" or "assistants_output" or "batch" or 5 more` - 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,和 `user_data`. + 文件的预期用途。支持的值包括 `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`,以及 `user_data`. - `"assistants"` @@ -160,7 +160,7 @@ File 对象一样在我们平台的其余部分使用。 - `status: "uploaded" or "processed" or "error"` - 已弃用。文件的当前状态,可以是 `uploaded`, `processed`,或 `error`. + 已弃用。文件的当前状态,可能为 `uploaded`, `processed`,或 `error`. - `"uploaded"` @@ -170,11 +170,11 @@ File 对象一样在我们平台的其余部分使用。 - `expires_at: optional number` - 文件过期时的 Unix 时间戳(以秒为单位)。 + 文件到期时的 Unix 时间戳(单位:秒)。 - `status_details: optional string` - 已弃用。有关微调训练文件验证失败原因的详细信息,请参阅 `error` 字段 `fine_tuning.job`. + 已弃用。有关微调训练文件验证失败的原因详情,请参阅 `error` 字段,位于 `fine_tuning.job`. - `object: optional "upload"` diff --git a/docs/zh/api/reference/resources/uploads/subresources/parts/methods/create.md b/docs/zh/api/reference/resources/uploads/subresources/parts/methods/create.md index 04a0405..8d003c8 100644 --- a/docs/zh/api/reference/resources/uploads/subresources/parts/methods/create.md +++ b/docs/zh/api/reference/resources/uploads/subresources/parts/methods/create.md @@ -1,28 +1,28 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 -## 添加上传部分 +## Add upload part -**post** `/uploads/{upload_id}/parts` +**发布** `/uploads/{upload_id}/parts` -添加一个 [Part](/docs/api-reference/uploads/part-object) 到 [Upload](/docs/api-reference/uploads/object) 对象。Part 表示你尝试上传文件中的一段字节。 +将一个 [Part](/docs/api-reference/uploads/part-object) 添加到 [Upload](/docs/api-reference/uploads/object) 对象。一个 Part 表示你尝试上传的文件中的一块字节。 -每个 Part 最大可为 64 MB,你可以添加 Parts,直到达到 Upload 的最大值 8 GB。 +每个 Part 最多 64 MB,你可以不断添加 Parts,直到达到 Upload 的最大容量 8 GB。 -可以并行添加多个 Parts。你可以决定 Parts 的预期顺序,当你 [完成 Upload](/docs/api-reference/uploads/complete). +你可以并行添加多个 Parts。在你 [完成 Upload](/docs/api-reference/uploads/complete). ### 路径参数 - `upload_id: string` -### 返回值 +### 返回 - `UploadPart object { id, created_at, object, upload_id }` - 上传部分(Upload Part)表示可以添加到 Upload 对象中的字节块。 + upload Part 表示我们可以添加到 Upload 对象的一小块字节。 - `id: string` - 上传部分的唯一标识符,可在 API 端点中引用。 + upload Part 的唯一标识符,可以在 API 端点中引用。 - `created_at: number` @@ -30,7 +30,7 @@ - `object: "upload.part"` - 对象类型,始终为 `upload.part`. + 对象类型,始终是 `upload.part`. - `"upload.part"` diff --git a/docs/zh/api/reference/resources/vector_stores/methods/create.md b/docs/zh/api/reference/resources/vector_stores/methods/create.md index 1a4ef40..2b14102 100644 --- a/docs/zh/api/reference/resources/vector_stores/methods/create.md +++ b/docs/zh/api/reference/resources/vector_stores/methods/create.md @@ -1,20 +1,20 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 完整文档索引请参见 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 获取文档页面的 Markdown 版本。 ## 创建向量存储 **post** `/vector_stores` -创建向量存储。 +创建一个向量存储。 ### 请求体参数 - `chunking_strategy: optional AutoFileChunkingStrategyParam or StaticFileChunkingStrategyObjectParam` - 用于对文件进行分块的分块策略。如果未设置,将使用 `auto` 策略。仅在 `file_ids` 非空时适用。 + 用于对文件进行分块的分块策略。如果未设置,将使用 `auto` 策略。仅在 `file_ids` 不为空时适用。 - `AutoFileChunkingStrategyParam object { type }` - 默认策略。此策略当前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. + 默认策略。该策略目前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. - `type: "auto"` @@ -24,19 +24,19 @@ - `StaticFileChunkingStrategyObjectParam object { static, type }` - 通过设置块大小和块重叠来自定义你自己的分块策略。 + 通过设置分块大小和分块重叠来自定义你自己的分块策略。 - `static: StaticFileChunkingStrategy` - `chunk_overlap_tokens: number` - 块之间重叠的令牌数。默认值为 `400`. + 块之间重叠的 token 数。默认值为 `400`. - 请注意,重叠部分不得超过 `max_chunk_size_tokens`. + 请注意,重叠不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个块中的最大令牌数。默认值为 `800`。最小值为 `100` 且最大值为 `4096`. + 每个块中的最大 token 数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -54,44 +54,44 @@ - `anchor: "last_active_at"` - 过期策略生效的锚定时间戳。支持的锚点: `last_active_at`. + 过期策略适用的锚定时间戳。支持以下锚点: `last_active_at`. - `"last_active_at"` - `days: number` - 锚定时间之后的天数,届时向量存储将过期。 + 锚定时间之后向量存储将过期的天数。 - `file_ids: optional array of string` - 一份 [文件](/docs/api-reference/files) 向量存储应使用的 ID。适用于像 `file_search` 这样可访问文件的工具。 + 一个 [文件](/docs/api-reference/files) ID 的列表,向量存储应使用这些 ID。适用于 `file_search` 可以访问文件。 - `metadata: optional Metadata or null` - 可附加到对象上的 16 组键值对。这可用于 - 以结构化格式存储关于对象的附加信息, - 并通过 API 或仪表板查询对象。 + 可附加到对象的 16 个键值对。可以用于 + 以结构化格式存储对象的附加信息,并通过 API 或仪表板查询对象。 + 以结构化格式存储对象的附加信息,并通过 接口 或仪表板查询对象。 - 键为字符串,最大长度为 64 个字符。值为字符串, - 最大长度为 512 个字符。 + 键为字符串,最长 64 个字符。值为字符串, + 最长 512 个字符。 - `name: optional string` 向量存储的名称。 -### 返回 +### 返回值 - `VectorStore object { id, created_at, file_counts, 8 more }` - 向量存储是已处理文件的集合,可供 `file_search` 工具使用。 + 向量存储是已处理文件的集合,可供以下工具使用 `file_search` 使用。 - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符可在 API 端点中引用。 - `created_at: number` - 向量存储创建时的 Unix 时间戳(秒)。 + 向量存储创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -117,16 +117,16 @@ - `last_active_at: number or null` - 向量存储最后一次活跃时的 Unix 时间戳(秒)。 + 向量存储最近一次活跃时的 Unix 时间戳(以秒为单位)。 - `metadata: Metadata or null` - 可附加到对象上的 16 个键值对集合。这可 - 用于以结构化格式存储关于该对象的额外信息, - 并通过 API 或仪表盘查询对象。 + 可附加到对象的 16 个键值对。可以用于 + 以结构化格式存储对象的附加信息,并通过 API 或仪表板查询对象。 + 以结构化格式存储对象的附加信息,并通过 接口 或仪表板查询对象。 - 键是字符串,最大长度为 64 个字符。值是字符串, - 最大长度为 512 个字符。 + 键为字符串,最长 64 个字符。值为字符串, + 最长 512 个字符。 - `name: string` @@ -140,7 +140,7 @@ - `status: "expired" or "in_progress" or "completed"` - 向量存储的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示向量存储已准备好使用。 + 向量存储的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示该向量存储可供使用。 - `"expired"` @@ -150,7 +150,7 @@ - `usage_bytes: number` - 向量存储中文件使用的总字节数。 + 向量存储中文件使用的字节总数。 - `expires_after: optional object { anchor, days }` @@ -158,17 +158,17 @@ - `anchor: "last_active_at"` - 过期策略适用的锚定时间戳。支持的锚点: `last_active_at`. + 过期策略适用的锚定时间戳。支持以下锚点: `last_active_at`. - `"last_active_at"` - `days: number` - 锚定时间之后向量存储过期的天数。 + 锚定时间之后向量存储将过期的天数。 - `expires_at: optional number or null` - 向量存储过期的 Unix 时间戳(秒)。 + 向量存储到期时的 Unix 时间戳(以秒为单位)。 ### 示例 diff --git a/docs/zh/api/reference/resources/vector_stores/methods/delete.md b/docs/zh/api/reference/resources/vector_stores/methods/delete.md index 8db02e1..9973264 100644 --- a/docs/zh/api/reference/resources/vector_stores/methods/delete.md +++ b/docs/zh/api/reference/resources/vector_stores/methods/delete.md @@ -1,8 +1,8 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参见 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 -## 删除向量存储 +## Delete vector store -**删除** `/vector_stores/{vector_store_id}` +**delete** `/vector_stores/{vector_store_id}` 删除向量存储。 diff --git a/docs/zh/api/reference/resources/vector_stores/methods/list.md b/docs/zh/api/reference/resources/vector_stores/methods/list.md index 79bf8f4..828e9d1 100644 --- a/docs/zh/api/reference/resources/vector_stores/methods/list.md +++ b/docs/zh/api/reference/resources/vector_stores/methods/list.md @@ -1,4 +1,4 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 来获取。 ## 列出向量存储 @@ -10,19 +10,19 @@ - `after: optional string` - 用于分页的游标。 `after` 是一个对象 ID,定义你在列表中的位置。例如,如果你发出列表请求并收到 100 个对象,以 obj_foo 结尾,那么你的后续调用可以包含 after=obj_foo,以便获取列表的下一页。 + 分页时使用的游标。 `after` 是一个对象 ID,用于定义你在列表中所处的位置。例如,如果你发起列表请求并收到 100 个对象,最后一个对象是 obj_foo,那么后续调用可以包含 after=obj_foo 以获取列表的下一页。 - `before: optional string` - 用于分页的游标。 `before` 是一个对象 ID,定义你在列表中的位置。例如,如果你发出列表请求并收到 100 个对象,以 obj_foo 开头,那么你的后续调用可以包含 before=obj_foo,以便获取列表的上一页。 + 分页时使用的游标。 `before` 是一个对象 ID,用于定义你在列表中所处的位置。例如,如果你发起列表请求并收到 100 个对象,第一个对象是 obj_foo,那么后续调用可以包含 before=obj_foo 以获取列表的上一页。 - `limit: optional number` - 返回对象数量的限制。限制范围在 1 到 100 之间,默认为 20。 + 要返回的对象数量上限。范围在 1 到 100 之间,默认值为 20。 - `order: optional "asc" or "desc"` - 按对象的 `created_at` 时间戳排序。 `asc` 为升序, `desc` 为降序。 + 按对象的时间戳排序。 `created_at` 排序。 `asc` 表示升序, `desc` 表示降序。 - `"asc"` @@ -38,7 +38,7 @@ - `created_at: number` - 创建向量存储时的 Unix 时间戳(以秒为单位)。 + 向量存储创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -64,16 +64,16 @@ - `last_active_at: number or null` - 向量存储最后一次活跃时的 Unix 时间戳(以秒为单位)。 + 向量存储最后一次处于活跃状态时的 Unix 时间戳(以秒为单位)。 - `metadata: Metadata or null` - 可附加到对象上的 16 个键值对集合。这可以 - 用于以结构化 - 格式存储关于对象的额外信息,并通过 API 或仪表板查询对象。 + 可附加到对象的 16 个键值对集合。可用于 + 以结构化格式存储有关对象的附加信息,并通过 + API 或仪表板查询对象。 - 键是字符串,最大长度为 64 个字符。值是字符串 - ,最大长度为 512 个字符。 + 键为字符串,最长 64 个字符。值为字符串, + 最长 512 个字符。 - `name: string` @@ -87,7 +87,7 @@ - `status: "expired" or "in_progress" or "completed"` - 向量存储的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示向量存储即可使用。 + 向量存储的状态,可为 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示向量存储已可供使用。 - `"expired"` @@ -97,7 +97,7 @@ - `usage_bytes: number` - 向量存储中文件使用的总字节数。 + 向量存储中文件占用的总字节数。 - `expires_after: optional object { anchor, days }` @@ -105,17 +105,17 @@ - `anchor: "last_active_at"` - 过期策略生效的锚定时间戳。支持的锚定: `last_active_at`. + 应用过期策略的锚点时间戳。支持以下锚点: `last_active_at`. - `"last_active_at"` - `days: number` - 锚定时间后,向量存储过期的天数。 + 向量存储将在锚点时间之后指定天数后过期。 - `expires_at: optional number or null` - 向量存储过期时的 Unix 时间戳(以秒为单位)。 + 向量存储过期的 Unix 时间戳(以秒为单位)。 - `first_id: string` diff --git a/docs/zh/api/reference/resources/vector_stores/methods/retrieve.md b/docs/zh/api/reference/resources/vector_stores/methods/retrieve.md index 334d40a..7eaa4ab 100644 --- a/docs/zh/api/reference/resources/vector_stores/methods/retrieve.md +++ b/docs/zh/api/reference/resources/vector_stores/methods/retrieve.md @@ -1,10 +1,10 @@ -> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,可在页面 URL 末尾追加 `.md` 来获取。 -## 检索向量存储 +## Retrieve vector store **get** `/vector_stores/{vector_store_id}` -检索一个向量存储。 +检索向量存储。 ### 路径参数 @@ -14,11 +14,11 @@ - `VectorStore object { id, created_at, file_counts, 8 more }` - 向量存储是已处理文件的集合,可由 `file_search` 工具使用。 + 向量存储是已处理文件的集合,可供 `file_search` 工具使用。 - `id: string` - 标识符,可在 API 端点中引用。 + 可在 API 端点中引用的标识符。 - `created_at: number` @@ -44,20 +44,20 @@ - `total: number` - 文件总数。 + 文件的总数。 - `last_active_at: number or null` - 向量存储上次活跃时的 Unix 时间戳(以秒为单位)。 + 向量存储最近一次活跃时的 Unix 时间戳(以秒为单位)。 - `metadata: Metadata or null` 可附加到对象的 16 个键值对集合。这可以 用于以结构化格式存储有关对象的附加信息, - 并通过 API 或仪表板查询对象。 + 并通过 API 或控制台查询对象。 - 键是字符串,最大长度为 64 个字符。值是字符串, - 最大长度为 512 个字符。 + 键为字符串,最长 64 个字符。值为字符串, + 最长 512 个字符。 - `name: string` @@ -71,7 +71,7 @@ - `status: "expired" or "in_progress" or "completed"` - 向量存储的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示向量存储已可供使用。 + 向量存储的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示该向量存储已可以使用。 - `"expired"` @@ -81,7 +81,7 @@ - `usage_bytes: number` - 向量存储中文件使用的总字节数。 + 向量存储中所有文件占用的字节总数。 - `expires_after: optional object { anchor, days }` @@ -89,17 +89,17 @@ - `anchor: "last_active_at"` - 过期策略生效的锚定时间戳。支持的锚点: `last_active_at`. + 过期策略生效的锚定时间戳。支持以下锚点: `last_active_at`. - `"last_active_at"` - `days: number` - 锚定时间之后,向量存储过期的天数。 + 从锚定时间起,向量存储过期的天数。 - `expires_at: optional number or null` - 向量存储过期时的 Unix 时间戳(以秒为单位)。 + 向量存储过期的 Unix 时间戳(以秒为单位)。 ### 示例 diff --git a/docs/zh/api/reference/resources/vector_stores/methods/search.md b/docs/zh/api/reference/resources/vector_stores/methods/search.md index 42e710b..48a6388 100644 --- a/docs/zh/api/reference/resources/vector_stores/methods/search.md +++ b/docs/zh/api/reference/resources/vector_stores/methods/search.md @@ -1,10 +1,10 @@ -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,请在页面 URL 末尾追加 `.md` 。 -## 搜索向量存储 +## Search vector store **post** `/vector_stores/{vector_store_id}/search` -根据查询和文件属性过滤器,在向量存储中搜索相关块。 +基于查询和文件属性过滤器检索向量存储中的相关分块。 ### 路径参数 @@ -22,11 +22,11 @@ - `filters: optional ComparisonFilter or CompoundFilter` - 基于文件属性应用的过滤器。 + 基于文件属性应用的筛选器。 - `ComparisonFilter object { key, type, value }` - 使用定义的比较操作,将指定的属性键与给定值进行比较的过滤器。 + 用于将指定的属性键与给定值使用定义的比较运算进行比较的筛选器。 - `key: string` @@ -42,8 +42,8 @@ - `gte`: 大于或等于 - `lt`: 小于 - `lte`: 小于或等于 - - `in`: 在 - - `nin`: 不在 + - `in`: 包含于 + - `nin`: 不包含于 - `"eq"` @@ -79,15 +79,15 @@ - `CompoundFilter object { filters, type }` - 使用 `and` 或 `or`. + 使用以下方式组合多个筛选器 `and` 或 `or`. - `filters: array of ComparisonFilter or unknown` - 要组合的过滤器数组。项可以是 `ComparisonFilter` 或 `CompoundFilter`. + 要组合的筛选器数组。元素可以是 `ComparisonFilter` 或 `CompoundFilter`. - `ComparisonFilter object { key, type, value }` - 使用定义的比较操作,将指定的属性键与给定值进行比较的过滤器。 + 用于将指定的属性键与给定值使用定义的比较运算进行比较的筛选器。 - `unknown` @@ -101,7 +101,7 @@ - `max_num_results: optional number` - 要返回的最大结果数。该数字应在 1 到 50 之间(含 1 和 50)。 + 要返回的最大结果数。该数值应介于 1 到 50 之间(含两端)。 - `ranking_options: optional object { ranker, score_threshold }` @@ -109,7 +109,7 @@ - `ranker: optional "none" or "auto" or "default-2024-11-15"` - 启用重新排序;设置为 `none` 以禁用,这有助于减少延迟。 + 启用重排序;设置为 `none` 以禁用,这有助于降低延迟。 - `"none"` @@ -123,7 +123,7 @@ 是否重写用于向量搜索的自然语言查询。 -### 返回 +### Returns - `data: array of object { attributes, content, file_id, 2 more }` @@ -131,11 +131,11 @@ - `attributes: map[string or number or boolean] or null` - 可附加到对象上的16组键值对。这可以 - 用于以结构化格式存储关于对象的额外信息, - 并通过API或仪表板查询对象。键是字符串, - 最大长度为64个字符。值是字符串,最大 - 长度为512个字符、布尔值或数字。 + 可附加到对象的 16 个键值对。这可以 + 用于以结构化格式存储有关对象的附加信息,并通过 + API 或仪表板查询对象。键是字符串, + 最大长度为 64 个字符。值是最大长度为 512 个字符的字符串、 + 布尔值或数字。 - `string` @@ -159,7 +159,7 @@ - `file_id: string` - 向量存储文件的ID。 + 向量存储文件的 ID。 - `filename: string` @@ -171,11 +171,11 @@ - `has_more: boolean` - 指示是否还有更多结果可获取。 + 指示是否还有更多结果可供获取。 - `next_page: string or null` - 下一页的令牌(如有)。 + 下一页的令牌(如果有)。 - `object: "vector_store.search_results.page"` diff --git a/docs/zh/api/reference/resources/vector_stores/methods/update.md b/docs/zh/api/reference/resources/vector_stores/methods/update.md index e0c9035..e25dc37 100644 --- a/docs/zh/api/reference/resources/vector_stores/methods/update.md +++ b/docs/zh/api/reference/resources/vector_stores/methods/update.md @@ -1,10 +1,10 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 ## 修改向量存储 **post** `/vector_stores/{vector_store_id}` -修改向量存储。 +修改一个向量存储。 ### 路径参数 @@ -18,22 +18,22 @@ - `anchor: "last_active_at"` - 过期策略生效的锚定时间戳。支持的锚点: `last_active_at`. + 应用过期策略的锚定时间戳。支持以下锚点: `last_active_at`. - `"last_active_at"` - `days: number` - 锚定时间之后,向量存储过期的天数。 + 向量存储将在锚定时间之后指定天数过期。 - `metadata: optional Metadata or null` - 可附加到对象上的16组键值对。这可以 - 用于以结构化格式存储关于对象的额外信息, - 并通过 API 或仪表盘查询对象。 + 可以附加到对象的 16 组键值对。可用于 + 以结构化格式存储关于对象的附加信息, + 并通过 API 或仪表板查询对象。 - 键是字符串,最大长度为64个字符。值是字符串 - ,最大长度为512个字符。 + 键为字符串,最长 64 个字符。值为字符串, + 最长 512 个字符。 - `name: optional string or null` @@ -43,21 +43,21 @@ - `VectorStore object { id, created_at, file_counts, 8 more }` - 向量存储是经处理的文件的集合,可供 `file_search` 工具使用。 + 一个向量库是已处理文件的集合,可供以下工具使用: `file_search` tool. - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储创建时的 Unix 时间戳(秒)。 + 向量库创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` - `cancelled: number` - 已取消的文件数量。 + 已被取消的文件数量。 - `completed: number` @@ -77,16 +77,16 @@ - `last_active_at: number or null` - 向量存储最后活跃时的 Unix 时间戳(秒)。 + 向量库最近一次活跃时的 Unix 时间戳(以秒为单位)。 - `metadata: Metadata or null` - 可附加到对象上的 16 个键值对集合。这可以 - 用于以结构化格式存储关于对象的额外信息, - 并通过 API 或仪表盘查询对象。 + 可以附加到对象的 16 组键值对。可用于 + 以结构化格式存储关于对象的附加信息, + 并通过 API 或仪表板查询对象。 - 键是字符串,最大长度为 64 个字符。值是字符串, - 最大长度为 512 个字符。 + 键为字符串,最长 64 个字符。值为字符串, + 最长 512 个字符。 - `name: string` @@ -100,7 +100,7 @@ - `status: "expired" or "in_progress" or "completed"` - 向量存储的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示向量存储已可供使用。 + 向量库的状态,可以是 `expired`, `in_progress`,或 `completed`。状态为 `completed` 表示该向量库已可供使用。 - `"expired"` @@ -110,7 +110,7 @@ - `usage_bytes: number` - 向量存储中文件使用的总字节数。 + 向量库中所有文件占用的总字节数。 - `expires_after: optional object { anchor, days }` @@ -118,17 +118,17 @@ - `anchor: "last_active_at"` - 过期策略适用的锚定时间戳。支持的锚定方式: `last_active_at`. + 应用过期策略的锚定时间戳。支持以下锚点: `last_active_at`. - `"last_active_at"` - `days: number` - 锚定时间后,向量存储过期的天数。 + 向量存储将在锚定时间之后指定天数过期。 - `expires_at: optional number or null` - 向量存储过期的 Unix 时间戳(以秒为单位)。 + 向量库到期时的 Unix 时间戳(以秒为单位)。 ### 示例 diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches.md b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches.md index 3a88e0a..b7fa3f0 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches.md @@ -1,12 +1,12 @@ # 文件批次 -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 ## 取消向量存储文件批次 **post** `/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel` -取消向量存储文件批次。此操作会尽快尝试取消该批次中文件的处理。 +取消一个向量存储文件批次。此操作会尽快尝试取消该批次中文件的处理。 ### 路径参数 @@ -26,7 +26,7 @@ - `created_at: number` - 创建向量存储文件批次时的 Unix 时间戳(秒)。 + 向量存储文件批次创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -36,7 +36,7 @@ - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` @@ -70,7 +70,7 @@ - `vector_store_id: string` - 该 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加到该存储中。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 附加到该向量存储。 ### 示例 @@ -133,21 +133,21 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 **post** `/vector_stores/{vector_store_id}/file_batches` -创建向量存储文件批次。 +创建一个向量存储文件批次。 ### 路径参数 - `vector_store_id: string` -### 请求体参数 +### 正文参数 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象上的 16 个键值对集合。这可以 - 用于以结构化格式存储关于对象的额外信息, - 并通过 API 或仪表板查询对象。键是字符串, - 最大长度为 64 个字符。值是字符串,最大 - 长度为 512 个字符、布尔值或数字。 + 可附加到对象的 16 个键值对。这可以 + 以结构化格式存储关于对象的额外信息非常有用, + 并可通过 API 或仪表板查询对象。键是字符串, + 最大长度为 64 个字符。值是最大长度为 512 个字符的字符串、布尔值或数字。 + 长度为 512 个字符的字符串、布尔值或数字。 - `string` @@ -161,7 +161,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `AutoFileChunkingStrategyParam object { type }` - 默认策略。该策略目前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. + 默认策略。此策略当前使用 `max_chunk_size_tokens` 个 `800` 和 `chunk_overlap_tokens` 个 `400`. - `type: "auto"` @@ -171,19 +171,19 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `StaticFileChunkingStrategyObjectParam object { static, type }` - 通过设置块大小和块重叠来自定义你自己的分块策略。 + 通过设置块大小和块重叠来自定义你的分块策略。 - `static: StaticFileChunkingStrategy` - `chunk_overlap_tokens: number` - 块之间重叠的令牌数量。默认值为 `400`. + 块之间重叠的令牌数。默认值为 `400`. - 请注意,重叠不得超过 `max_chunk_size_tokens`. + 请注意,重叠不能超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个块中的最大令牌数量。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -193,23 +193,23 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `file_ids: optional array of string` - 列表 [文件](/docs/api-reference/files) 向量存储应使用的ID。适用于像 `file_search` 这样可以访问文件的工具。如果 `attributes` 或 `chunking_strategy` 提供了,它们将应用于批次中的所有文件。最大批次大小为2000个文件。此端点推荐用于多文件摄取,并有助于减少每次向量存储的写入请求压力。与 `files`. + 一个 [文件](/docs/api-reference/files) 向量存储应使用的 ID 列表。对于像 `file_search` 这类可访问文件的工具非常有用。 如果 `attributes` 或 `chunking_strategy` 会被应用于批中的所有文件。最大批量大小为 2000 个文件。建议在多文件接入时使用此端点,有助于降低每个向量存储的写入请求压力。与 `files`. - `files: optional array of object { file_id, attributes, chunking_strategy }` - 对象列表,每个对象包含一个 `file_id` 以及可选的 `attributes` 或 `chunking_strategy`。当需要为特定文件覆盖元数据时使用此选项。全局的 `attributes` 或 `chunking_strategy` 将被忽略,必须为每个文件指定。最大批次大小为2000个文件。此端点推荐用于多文件摄取,并有助于减少每次向量存储的写入请求压力。与 `file_ids`. + 每个对象均包含一个 `file_id` 以及可选的 `attributes` 或 `chunking_strategy`。当你需要为特定文件覆盖元数据时使用。提供了全局 `attributes` 或 `chunking_strategy` 将被忽略,且必须为每个文件单独指定。最大批量大小为 2000 个文件。建议在多文件接入时使用此端点,有助于降低每个向量存储的写入请求压力。与 `file_ids`. - `file_id: string` - 一个 [文件](/docs/api-reference/files) 向量存储应使用的ID。适用于像 `file_search` 这样可以访问文件的工具。对于多文件摄取,我们推荐使用 [`file_batches`](/docs/api-reference/vector-stores-file-batches/createBatch) 以尽量减少每次向量存储的写入请求。 + 一个 [文件](/docs/api-reference/files) 向量存储应使用的 ID。便于像 `file_search` 等可访问文件的工具使用。对于多文件接入,我们建议使用 [`file_batches`](/docs/api-reference/vector-stores-file-batches/createBatch) 以最小化每个向量存储的写入请求。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象的16个键值对集合。这可以 - 用于以结构化格式存储关于对象的额外信息, - 并通过API或仪表板查询对象。键是字符串 - 最大长度为64个字符。值是字符串,最大 - 长度为 512 字符的字符串、布尔值或数字。 + 可附加到对象的 16 个键值对。这可以 + 以结构化格式存储关于对象的额外信息非常有用, + 并可通过 API 或仪表板查询对象。键是字符串, + 最大长度为 64 个字符。值是最大长度为 512 个字符的字符串、布尔值或数字。 + 长度为 512 个字符的字符串、布尔值或数字。 - `string` @@ -229,11 +229,11 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件批次创建时的 Unix 时间戳(秒)。 + 向量存储文件批次创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -243,7 +243,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` @@ -277,7 +277,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `vector_store_id: string` - 该 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加于此。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 附加到该向量存储。 ### 示例 @@ -352,11 +352,11 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ } ``` -## 列出批次中的向量存储文件 +## 批量列出向量存储文件 **get** `/vector_stores/{vector_store_id}/file_batches/{batch_id}/files` -返回批次中的向量存储文件列表。 +返回某个批次中向量存储文件的列表。 ### 路径参数 @@ -368,15 +368,15 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `after: optional string` - 用于分页的游标。 `after` 是一个定义你在列表中位置的对象 ID。例如,如果你发出列表请求并收到 100 个对象(以 obj_foo 结尾),后续调用可以包含 after=obj_foo 以获取列表的下一页。 + 用于分页游标。 `after` 是一个用于定义你在列表中所处位置的对象 ID。例如,如果你发起一次列表请求并收到 100 个对象,以 obj_foo 结尾,那么你的后续调用可以包含 after=obj_foo 以获取列表的下一页。 - `before: optional string` - 用于分页的游标。 `before` 是一个定义你在列表中位置的对象 ID。例如,如果你发出列表请求并收到 100 个对象(以 obj_foo 开头),后续调用可以包含 before=obj_foo 以获取列表的上一页。 + 用于分页游标。 `before` 是一个用于定义你在列表中所处位置的对象 ID。例如,如果你发起一次列表请求并收到 100 个对象,以 obj_foo 开头,那么你的后续调用可以包含 before=obj_foo 以获取列表的上一页。 - `filter: optional "in_progress" or "completed" or "failed" or "cancelled"` - 按文件状态筛选。以下之一: `in_progress`, `completed`, `failed`, `cancelled`. + 按文件状态进行过滤。可选值为 `in_progress`, `completed`, `failed`, `cancelled`. - `"in_progress"` @@ -388,11 +388,11 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `limit: optional number` - 返回对象数量的限制。限制取值范围为 1 到 100,默认为 20。 + 返回对象的数量上限,范围为 1 到 100,默认值为 20。 - `order: optional "asc" or "desc"` - 按对象的 `created_at` 时间戳排序。 `asc` 表示升序, `desc` 表示降序。 + 按对象的 `created_at` 时间戳进行排序。 `asc` 表示升序, `desc` 表示降序。 - `"asc"` @@ -404,19 +404,19 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `id: string` - 可在API端点中引用的标识符。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件创建时的 Unix 时间戳(秒)。 + 该向量存储文件创建时的 Unix 时间戳(以秒为单位)。 - `last_error: object { code, message } or null` - 与此向量存储文件关联的最后一个错误。如果没有错误,则为 `null` 。 + 与该向量存储文件关联的最近一次错误。如果没有错误则为 `null` 。 - `code: "server_error" or "unsupported_file" or "invalid_file"` - 以下之一 `server_error`, `unsupported_file`,或 `invalid_file`. + 可选值为 `server_error`, `unsupported_file`,或 `invalid_file`. - `"server_error"` @@ -426,7 +426,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `message: string` - 错误的可读描述。 + 该错误的人类可读描述。 - `object: "vector_store.file"` @@ -436,7 +436,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件的状态,可以是 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示向量存储文件可供使用。 + 向量存储文件的状态,可为 `in_progress`, `completed`, `cancelled`,或 `failed`。之一。状态 `completed` 表示该向量存储文件已可供使用。 - `"in_progress"` @@ -448,19 +448,19 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `usage_bytes: number` - 向量存储的总使用量(以字节为单位)。请注意,这可能与原始文件大小不同。 + 向量存储的总使用量(以字节为单位)。请注意,该值可能与原始文件大小不同。 - `vector_store_id: string` - 该 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加到该向量存储。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 附加到该向量存储。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象上的 16 个键值对集合。这可用于以结构化方式存储有关对象的额外信息, - 例如存储额外信息(可用于筛选)或存储对象相关元数据。 - 格式,以及通过API或仪表盘查询对象。键是字符串 - ,最大长度为 64 个字符。值是字符串,最大 - 长度为 512 个字符、布尔值或数字。 + 可附加到对象的 16 个键值对。这可以 + 以结构化格式存储关于对象的额外信息非常有用, + 并可通过 API 或仪表板查询对象。键是字符串, + 最大长度为 64 个字符。值是最大长度为 512 个字符的字符串、布尔值或数字。 + 长度为 512 个字符的字符串、布尔值或数字。 - `string` @@ -470,7 +470,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `chunking_strategy: optional StaticFileChunkingStrategyObject or OtherFileChunkingStrategyObject` - 用于对文件进行分块的策略。 + 用于对文件进行分块处理的策略。 - `StaticFileChunkingStrategyObject object { static, type }` @@ -478,13 +478,13 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `chunk_overlap_tokens: number` - 块之间重叠的 token 数量。默认值为 `400`. + 块之间重叠的令牌数。默认值为 `400`. - 请注意,重叠量不得超过 `max_chunk_size_tokens`. + 请注意,重叠不能超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 的半数。每个块中的最大 token 数量。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -494,7 +494,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches \ - `OtherFileChunkingStrategyObject object { type }` - 当分块策略未知时返回此值。通常是因为文件在 `chunking_strategy` 概念引入API之前已被索引。 + 当 chunking 策略未知时返回此结果。通常,这是因为该文件在 `chunking_strategy` 概念引入到 API 之前已被索引。 - `type: "other"` @@ -591,7 +591,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 **get** `/vector_stores/{vector_store_id}/file_batches/{batch_id}` -检索向量存储文件批次。 +检索一个向量存储文件批次。 ### 路径参数 @@ -607,11 +607,11 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `id: string` - 标识符,可在API端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件批次创建时的 Unix 时间戳(秒)。 + 向量存储文件批次创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -621,7 +621,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` @@ -655,7 +655,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/files_batches/vsfb_abc123 - `vector_store_id: string` - 文件附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加于该存储。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 附加到该向量存储。 ### 示例 @@ -712,9 +712,9 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches/vsfb_abc123 } ``` -## 域类型 +## Domain Types -### 向量存储文件批次 +### Vector Store File Batch - `VectorStoreFileBatch object { id, created_at, file_counts, 3 more }` @@ -722,11 +722,11 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches/vsfb_abc123 - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件批次创建时的 Unix 时间戳(秒)。 + 向量存储文件批次创建时的 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -736,7 +736,7 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches/vsfb_abc123 - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` @@ -770,4 +770,4 @@ curl https://api.openai.com/v1/vector_stores/vs_abc123/file_batches/vsfb_abc123 - `vector_store_id: string` - 该 [vector store](/docs/api-reference/vector-stores/object) 的 ID, [File](/docs/api-reference/files) 附加到该向量存储。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 附加到该向量存储。 diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md index 87aa4fa..a12f8d3 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/cancel.md @@ -1,10 +1,10 @@ -> 完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,可在页面 URL 后追加 `.md` 来获取。 -## 取消向量存储文件批处理 +## 取消向量存储文件批次 **post** `/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel` -取消向量存储文件批次。此操作将尽快尝试取消该批次中文件的处理。 +取消一个向量存储文件批次。此操作会尽快尝试取消该批次中文件的处理。 ### 路径参数 @@ -16,15 +16,15 @@ - `VectorStoreFileBatch object { id, created_at, file_counts, 3 more }` - 附加到向量存储的一组文件。 + 附加到向量存储的一批文件。 - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件批次创建时的 Unix 时间戳(以秒为单位)。 + 向量存储文件批次的创建 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -34,7 +34,7 @@ - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` @@ -68,7 +68,7 @@ - `vector_store_id: string` - }}的 ID, [向量存储](/docs/api-reference/vector-stores/object) 该 [文件](/docs/api-reference/files) 附加到该存储。 + 所关联的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 附加到该向量存储。 ### 示例 diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md index 6a82e9d..074a1d7 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/create.md @@ -1,4 +1,4 @@ -> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 完整文档索引请参见 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 获取文档页面的 Markdown 版本。 ## 创建向量存储文件批次 @@ -10,15 +10,15 @@ - `vector_store_id: string` -### 请求正文参数 +### 正文参数 - `attributes: optional map[string or number or boolean] or null` - 一组最多 16 个键值对,可附加到对象上。这可用于 - 以结构化格式存储有关对象的附加信息,并 - 通过 API 或仪表盘查询对象。键是字符串, - 最大长度为 64 个字符。值是字符串,最大 - 长度为 512 个字符,也可以是布尔值或数字。 + 可附加到对象的 16 组键值对。可用于 + 以结构化格式存储关于对象的附加信息,并通过 + 格式存储关于对象的附加信息,并通过 API 或控制面板查询对象。键为字符串, + 最大长度为 64 个字符。值为字符串,最大 + 长度为 512 个字符、布尔值或数字。 - `string` @@ -28,15 +28,15 @@ - `chunking_strategy: optional FileChunkingStrategyParam` - 用于对文件进行分块的策略。如果未设置,将使用 `auto` 策略。 + 用于对文件进行分块的分块策略。如果未设置,将使用 `auto` 该策略。 - `AutoFileChunkingStrategyParam object { type }` - 默认策略。该策略目前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. + 默认策略。此策略当前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. - `type: "auto"` - 始终 `auto`. + Always `auto`. - `"auto"` @@ -48,39 +48,39 @@ - `chunk_overlap_tokens: number` - 块之间重叠的令牌数。默认值为 `400`. + 块之间重叠的 token 数量。默认值为 `400`. - 请注意,重叠不能超过 `max_chunk_size_tokens`. + 请注意,重叠部分不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个块的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中的最大 token 数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` - 始终 `static`. + Always `static`. - `"static"` - `file_ids: optional array of string` - 一个列表 [文件](/docs/api-reference/files) 向量存储应使用的 ID。适用于以下工具 `file_search` 可访问文件。如果 `attributes` 或 `chunking_strategy` 已提供,将应用于批次中的所有文件。最大批次大小为 2000 个文件。此端点建议用于多文件摄取,有助于减少每个向量存储的写入请求压力。与 `files`. + 一个 [File](/docs/api-reference/files) ID 列表,向量存储应使用这些 ID。适用于 `file_search` 可以访问文件。如果 `attributes` 或 `chunking_strategy` 已提供,它们将应用于该批中的所有文件。最大批大小为 2000 个文件。此端点推荐用于多文件导入,有助于减少每个向量存储的写入请求压力。与 `files`. - `files: optional array of object { file_id, attributes, chunking_strategy }` - 相互排斥。对象列表,每个对象包含 `file_id` 以及可选的 `attributes` 或 `chunking_strategy`。当你需要覆盖特定文件的元数据时使用此方法。全局 `attributes` 或 `chunking_strategy` 将被忽略,且必须为每个文件指定。最大批次大小为 2000 个文件。此端点建议用于多文件摄取,有助于减少每个向量存储的写入请求压力。与 `file_ids`. + 一个对象列表,其中每个对象都包含一个 `file_id` 以及可选的 `attributes` 或 `chunking_strategy`. 用于需要在特定文件上覆盖元数据时。全局 `attributes` 或 `chunking_strategy` 会被忽略,并且必须为每个文件单独指定。单批次最大文件数为 2000。建议在多文件接入场景中使用此端点,以降低每个向量存储写入请求的压力。与以下操作互斥: `file_ids`. - `file_id: string` - 一个 [文件](/docs/api-reference/files) 向量存储应使用的 ID。适用于以下工具 `file_search` 可访问文件。对于多文件摄取,我们建议 [`file_batches`](/docs/api-reference/vector-stores-file-batches/createBatch) 以尽量减少每个向量存储的写入请求。 + 一个 [File](/docs/api-reference/files) ,即向量存储应使用的 ID。可用于类似 `file_search` 之类的工具访问文件。对于多文件接入,我们推荐使用 [`file_batches`](/docs/api-reference/vector-stores-file-batches/createBatch) ,以最大程度减少每个向量存储的写入请求。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象的一组 16 个键值对。这可以 - 用于以结构化格式存储关于对象的附加信息, - 并通过 API 或仪表板进行查询。键是字符串, - 最大长度为 64 个字符。值是字符串,最大 - 512 个字符、布尔值或数字的长度。 + 可附加到对象的 16 组键值对。可用于 + 以结构化格式存储关于对象的附加信息,并通过 + 格式存储关于对象的附加信息,并通过 API 或控制面板查询对象。键为字符串, + 最大长度为 64 个字符。值为字符串,最大 + 长度为 512 个字符、布尔值或数字。 - `string` @@ -90,17 +90,17 @@ - `chunking_strategy: optional FileChunkingStrategyParam` - 用于对文件进行分块的分块策略。如果未设置,将使用 `auto` 策略。 + 用于对文件进行分块的分块策略。如果未设置,将使用 `auto` 该策略。 ### 返回 - `VectorStoreFileBatch object { id, created_at, file_counts, 3 more }` - 附加到向量存储的一组文件。 + 附加到向量存储的一批文件。 - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` @@ -114,19 +114,19 @@ - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` - 处理失败的文件数量。 + 处理失败的的文件数量。 - `in_progress: number` - 当前正在处理的文件数量。 + 当前正在处理的的文件数量。 - `total: number` - 文件总数。 + 文件的总数。 - `object: "vector_store.files_batch"` @@ -136,7 +136,7 @@ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件批次的状态,可以是 `in_progress`, `completed`, `cancelled` 或 `failed`. + 向量存储文件批次的,可以为 `in_progress`, `completed`, `cancelled` 或 `failed`. - `"in_progress"` @@ -148,7 +148,7 @@ - `vector_store_id: string` - 文件 [向量存储](/docs/api-reference/vector-stores/object) 所附加到的 [文件](/docs/api-reference/files) 的 ID。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID。 [File](/docs/api-reference/files) 。 ### 示例 diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md index 436db82..67e6d9a 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/list_files.md @@ -1,10 +1,10 @@ -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取文档页面的 Markdown 版本。 ## 批量列出向量存储文件 **get** `/vector_stores/{vector_store_id}/file_batches/{batch_id}/files` -返回批次中的向量存储文件列表。 +返回该批次内的向量存储文件列表。 ### 路径参数 @@ -16,15 +16,15 @@ - `after: optional string` - 用于分页的游标。 `after` 是一个定义你在列表中位置的对象 ID。例如,如果你发出一个列表请求并收到 100 个对象,以 obj_foo 结尾,你的后续调用可以包含 after=obj_foo 以获取列表的下一页。 + 用于分页的游标。 `after` 是一个对象 ID,用于定义你在列表中所处的位置。例如,如果你发起列表请求并收到 100 个对象,以 obj_foo 结尾,则后续调用可以包含 after=obj_foo 以获取列表的下一页。 - `before: optional string` - 用于分页的游标。 `before` 是一个定义你在列表中位置的对象 ID。例如,如果你发出一个列表请求并收到 100 个对象,以 obj_foo 开头,你的后续调用可以包含 before=obj_foo 以获取列表的上一页。 + 用于分页的游标。 `before` 是一个对象 ID,用于定义你在列表中所处的位置。例如,如果你发起列表请求并收到 100 个对象,以 obj_foo 开头,则后续调用可以包含 before=obj_foo 以获取列表的上一页。 - `filter: optional "in_progress" or "completed" or "failed" or "cancelled"` - 按文件状态筛选。其一为 `in_progress`, `completed`, `failed`, `cancelled`. + 按文件状态过滤。可选值为 `in_progress`, `completed`, `failed`, `cancelled`. - `"in_progress"` @@ -36,17 +36,17 @@ - `limit: optional number` - 返回对象数量的限制。限制范围在 1 到 100 之间,默认为 20。 + 返回对象的数量上限。范围介于 1 到 100 之间,默认为 20。 - `order: optional "asc" or "desc"` - 按 `created_at` 对象的时间戳排序。 `asc` 为升序, `desc` 为降序。 + 按对象的 `created_at` 时间戳排序。 `asc` 表示升序, `desc` 表示降序。 - `"asc"` - `"desc"` -### 返回 +### 返回值 - `data: array of VectorStoreFile` @@ -56,15 +56,15 @@ - `created_at: number` - 向量存储文件创建时的 Unix 时间戳(秒)。 + 向量存储文件创建时的 Unix 时间戳(以秒为单位)。 - `last_error: object { code, message } or null` - 与此向量存储文件关联的最后错误。若无错误, `null` 则为。 + 与该向量存储文件关联的最后一个错误。如果没有错误,则为 `null` 。 - `code: "server_error" or "unsupported_file" or "invalid_file"` - 之一 `server_error`, `unsupported_file`,或 `invalid_file`. + 以下之一: `server_error`, `unsupported_file`,或 `invalid_file`. - `"server_error"` @@ -74,7 +74,7 @@ - `message: string` - 错误的可读描述。 + 对错误的可读描述。 - `object: "vector_store.file"` @@ -84,7 +84,7 @@ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件的状态,可以是 `in_progress`, `completed`, `cancelled`, 或 `failed`。状态 `completed` 表示向量存储文件可供使用。 + 向量存储文件的状态,可以是 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示该向量存储文件已可以使用。 - `"in_progress"` @@ -96,19 +96,19 @@ - `usage_bytes: number` - 向量存储的总用量(字节)。请注意,这可能与原始文件大小不同。 + 向量存储的总使用量(以字节为单位)。请注意,这可能与原始文件大小不同。 - `vector_store_id: string` - 该 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加于其上。 + 所关联的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID,该 [文件](/docs/api-reference/files) 被附加到该向量存储。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象上的 16 组键值对。这可用于 - 以结构化方式存储有关对象的附加信息。 - 格式,以及通过 API 或仪表盘查询对象。键为字符串, - 最大长度为 64 个字符。值为字符串,最大 - 长度为 512 个字符、布尔值或数字。 + 可附加到对象的 16 个键值对。这对于以结构化 + 格式存储对象的附加信息以及通过 API 或仪表板查询对象非常有用。键为字符串, + 长度为 + 最大长度为 64 个字符。值为最大 + 长度为 512 个字符的字符串、布尔值或数字。 - `string` @@ -126,13 +126,13 @@ - `chunk_overlap_tokens: number` - 块之间重叠的令牌数量。默认值为 `400`. + 块之间重叠的 token 数。默认值为 `400`. 请注意,重叠部分不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中 token 的最大数量。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -142,7 +142,7 @@ - `OtherFileChunkingStrategyObject object { type }` - 当分块策略未知时返回此值。通常是因为文件在 `chunking_strategy` 概念引入 API 之前已被索引。 + 当分块策略未知时返回此值。通常,这是因为文件在引入该 `chunking_strategy` 概念的 API 之前就已建立索引。 - `type: "other"` diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md index a4948f2..1b9a55f 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/file_batches/methods/retrieve.md @@ -1,4 +1,4 @@ -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在 `.md` 后追加该字符串获得。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 ## 检索向量存储文件批次 @@ -20,11 +20,11 @@ - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件批次创建时的 Unix 时间戳(秒)。 + 向量存储文件批次的创建 Unix 时间戳(以秒为单位)。 - `file_counts: object { cancelled, completed, failed, 2 more }` @@ -34,19 +34,19 @@ - `completed: number` - 已处理的文件数量。 + 已处理完成的文件数量。 - `failed: number` - 处理失败的文件数量。 + 处理失败的的文件数量。 - `in_progress: number` - 当前正在处理的文件数量。 + 当前正在处理的的文件数量。 - `total: number` - 文件总数。 + 文件的总数。 - `object: "vector_store.files_batch"` @@ -56,7 +56,7 @@ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件批次的状态,可为 `in_progress`, `completed`, `cancelled` 或 `failed`. + 向量存储文件批次的状态,可以为 `in_progress`, `completed`, `cancelled` 或 `failed`. - `"in_progress"` @@ -68,7 +68,7 @@ - `vector_store_id: string` - 该 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加于其中。 + 的 ID: [vector store](/docs/api-reference/vector-stores/object) 该 [File](/docs/api-reference/files) 所附加到的。 ### 示例 diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/content.md b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/content.md index b1d6e08..191e58f 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/content.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/content.md @@ -1,10 +1,10 @@ -> 关于完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 获取文档页面的 Markdown 版本。 ## 检索向量存储文件内容 **get** `/vector_stores/{vector_store_id}/files/{file_id}/content` -检索向量存储文件的解析内容。 +检索已解析的向量存储文件内容。 ### 路径参数 @@ -16,7 +16,7 @@ - `data: array of object { text, type }` - 文件的解析内容。 + 文件的已解析内容。 - `text: optional string` @@ -28,11 +28,11 @@ - `has_more: boolean` - 指示是否还有更多内容页需要获取。 + 指示是否还有更多内容页可获取。 - `next_page: string or null` - 下一页的令牌(如有)。 + 下一页的分页令牌(如果有)。 - `object: "vector_store.file_content.page"` diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/create.md b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/create.md index 4ef97c7..eddd264 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/create.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/create.md @@ -1,10 +1,10 @@ -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -## 创建向量存储文件 +## Create vector store file **post** `/vector_stores/{vector_store_id}/files` -创建向量存储文件,通过将 [文件](/docs/api-reference/files) 附加到 [向量存储](/docs/api-reference/vector-stores/object). +通过附加一个 [文件](/docs/api-reference/files) 到某个 [向量存储](/docs/api-reference/vector-stores/object). ### 路径参数 @@ -14,15 +14,15 @@ - `file_id: string` - 一个 [文件](/docs/api-reference/files) 向量存储应使用的 ID。对诸如 `file_search` 等工具很有用,此类工具可访问文件。对于多文件摄取,我们建议 [`file_batches`](/docs/api-reference/vector-stores-file-batches/createBatch) 以最小化每个向量存储的写入请求。 + 一个 [文件](/docs/api-reference/files) 向量存储应使用的 ID。便于像这样可以访问文件的工具使用 `file_search` 的多文件导入,我们建议 [`file_batches`](/docs/api-reference/vector-stores-file-batches/createBatch) 以减少每个向量存储的写入请求数。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象上的16组键值对。这可以 - 用于以结构化方式存储关于该对象的额外信息, - 并通过 API 或仪表盘查询对象。键是字符串 - ,最大长度为64个字符。值是字符串,最大 - 长度为512个字符、布尔值或数字。 + 可附加到对象的 16 组键值对。可用于以结构化格式 + 存储有关对象的附加信息,并通过 API 或仪表板查询对象。键是字符串, + 格式,并可通过 接口 或仪表板查询对象。键是字符串,最大长度为 64 个字符。值为字符串,最大 + 长度为 512 个字符、布尔值或数字。 + 长度为 512 个字符、布尔值或数字。 - `string` @@ -36,7 +36,7 @@ - `AutoFileChunkingStrategyParam object { type }` - 默认策略。此策略目前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. + 默认策略。该策略当前使用 `max_chunk_size_tokens` 的 `800` 和 `chunk_overlap_tokens` 的 `400`. - `type: "auto"` @@ -46,19 +46,19 @@ - `StaticFileChunkingStrategyObjectParam object { static, type }` - 通过设置块大小和块重叠来自定义自己的分块策略。 + 通过设置分块大小和分块重叠来自定义你自己的分块策略。 - `static: StaticFileChunkingStrategy` - `chunk_overlap_tokens: number` - 块之间重叠的令牌数。默认值为 `400`. + 块之间重叠的 token 数。默认值为 `400`. - 请注意,重叠值不得超过 `max_chunk_size_tokens`. + 注意,重叠不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个块中的最大 token 数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中 token 的最大数量。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -66,7 +66,7 @@ - `"static"` -### 返回 +### Returns - `VectorStoreFile object { id, created_at, last_error, 6 more }` @@ -74,7 +74,7 @@ - `id: string` - 标识符,可在 API 端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` @@ -82,11 +82,11 @@ - `last_error: object { code, message } or null` - 与此向量存储文件关联的最后错误。若无错误,则为 `null` 。 + 与此向量存储文件关联的最近一次错误。如果没有错误,则为 `null` 。 - `code: "server_error" or "unsupported_file" or "invalid_file"` - 其中之一为 `server_error`, `unsupported_file`,或 `invalid_file`. + 以下之一: `server_error`, `unsupported_file`、或 `invalid_file`. - `"server_error"` @@ -96,17 +96,17 @@ - `message: string` - 错误的可读描述。 + 人类可读的错误说明。 - `object: "vector_store.file"` - 对象类型,始终为 `vector_store.file`. + 对象类型,恒为 `vector_store.file`. - `"vector_store.file"` - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件的状态,可为 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示向量存储文件已可用于使用。 + 向量存储文件的状态,可能为 `in_progress`, `completed`, `cancelled`、或 `failed`. 该状态 `completed` 表示该向量存储文件已可供使用。 - `"in_progress"` @@ -118,19 +118,19 @@ - `usage_bytes: number` - 向量存储的总使用量(以字节为单位)。请注意,这可能与原始文件大小不同。 + 向量存储的总使用量(以字节为单位)。请注意,该值可能与原始文件大小不同。 - `vector_store_id: string` - 的 ID [向量存储](/docs/api-reference/vector-stores/object) , [文件](/docs/api-reference/files) 附加到该存储。 + 该向量存储的 ID。 [vector store](/docs/api-reference/vector-stores/object) 该 [文件](/docs/api-reference/files) 所附加到的对象。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象的 16 个键值对集合。这可以 - 可用于以结构化格式存储关于对象的附加信息, - 并通过API或控制台查询对象。键是字符串, - 最大长度为 64 个字符。值是字符串(最大 - 长度 512 个字符)、布尔值或数字。 + 可附加到对象的 16 组键值对。可用于以结构化格式 + 存储有关对象的附加信息,并通过 API 或仪表板查询对象。键是字符串, + 格式,并可通过 接口 或仪表板查询对象。键是字符串,最大长度为 64 个字符。值为字符串,最大 + 长度为 512 个字符、布尔值或数字。 + 长度为 512 个字符、布尔值或数字。 - `string` @@ -148,13 +148,13 @@ - `chunk_overlap_tokens: number` - 块之间重叠的令牌数量。默认值为 `400`. + 块之间重叠的 token 数。默认值为 `400`. - 请注意,重叠量不得超过 `max_chunk_size_tokens`. + 注意,重叠不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中 token 的最大数量。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -164,7 +164,7 @@ - `OtherFileChunkingStrategyObject object { type }` - 当分块策略未知时返回此值。通常,这是因为文件是在 `chunking_strategy` 该概念被引入 API 之前被索引的。 + 当分块策略未知时会返回此结果。通常,这是因为文件在引入 `chunking_strategy` 概念之前已被索引,该概念在 API 中引入。 - `type: "other"` diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/delete.md b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/delete.md index 76ebd03..84d1804 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/delete.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/delete.md @@ -1,10 +1,10 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 ## 删除向量存储文件 -**删除** `/vector_stores/{vector_store_id}/files/{file_id}` +**delete** `/vector_stores/{vector_store_id}/files/{file_id}` -删除向量存储文件。这将从向量存储中移除该文件,但文件本身不会被删除。要删除文件,请使用 [删除文件](/docs/api-reference/files/delete) 端点。 +删除一个向量存储文件。这会从向量存储中移除该文件,但文件本身不会被删除。若要删除文件,请使用 [delete file](/docs/api-reference/files/delete) 接口。 ### 路径参数 diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/list.md b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/list.md index c39b1e9..6d8c6f2 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/list.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/list.md @@ -1,10 +1,10 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。通过在页面 URL 后追加 `.md` 即可获取该页面的 Markdown 版本。 ## 列出向量存储文件 **get** `/vector_stores/{vector_store_id}/files` -返回向量存储文件列表。 +返回向量存储文件的列表。 ### 路径参数 @@ -14,15 +14,15 @@ - `after: optional string` - 用于分页的游标。 `after` 是一个对象 ID,用于定义你在列表中的位置。例如,如果你发出列表请求并收到 100 个对象,以 obj_foo 结尾,则后续调用可以包含 after=obj_foo,以获取列表的下一页。 + 用于分页的光标。 `after` 是一个对象 ID,用于标识你在列表中的位置。例如,如果你发起一次列表请求并收到 100 个对象,最后一个为 obj_foo,那么后续调用可以包含 after=obj_foo 以获取列表的下一页。 - `before: optional string` - 用于分页的游标。 `before` 是一个对象 ID,用于定义你在列表中的位置。例如,如果你发出列表请求并收到 100 个对象,以 obj_foo 开头,则后续调用可以包含 before=obj_foo,以获取列表的上一页。 + 用于分页的光标。 `before` 是一个对象 ID,用于标识你在列表中的位置。例如,如果你发起一次列表请求并收到 100 个对象,开头一个为 obj_foo,那么后续调用可以包含 before=obj_foo 以获取列表的上一页。 - `filter: optional "in_progress" or "completed" or "failed" or "cancelled"` - 按文件状态筛选。可选值有: `in_progress`, `completed`, `failed`, `cancelled`. + 按文件状态过滤。可选值为 `in_progress`, `completed`, `failed`, `cancelled`. - `"in_progress"` @@ -34,7 +34,7 @@ - `limit: optional number` - 返回对象数量的限制。限制范围在 1 到 100 之间,默认值为 20。 + 返回对象数量的上限。取值范围为 1 到 100,默认为 20。 - `order: optional "asc" or "desc"` @@ -54,15 +54,15 @@ - `created_at: number` - 向量存储文件创建时的 Unix 时间戳(秒)。 + 向量存储文件创建时的 Unix 时间戳(以秒为单位)。 - `last_error: object { code, message } or null` - 与此向量存储文件关联的最后一个错误。若无错误,则为 `null` 。 + 与该向量存储文件关联的最后一个错误。若无错误则为 `null` 空。 - `code: "server_error" or "unsupported_file" or "invalid_file"` - 取值之一为 `server_error`, `unsupported_file`,或 `invalid_file`. + 以下值之一: `server_error`, `unsupported_file`,或 `invalid_file`. - `"server_error"` @@ -72,7 +72,7 @@ - `message: string` - 错误的可读描述。 + 错误的人类可读描述。 - `object: "vector_store.file"` @@ -82,7 +82,7 @@ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件的状态,可为 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示向量存储文件已可随时使用。 + 向量存储文件的状态,可能为 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示该向量存储文件已可供使用。 - `"in_progress"` @@ -94,19 +94,19 @@ - `usage_bytes: number` - 向量存储的总使用字节数。请注意,这可能与原始文件大小不同。 + 向量存储的总使用量(以字节为单位)。请注意,这可能与原始文件大小不同。 - `vector_store_id: string` - 该 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 附加到该向量存储。 + 所关联的 [向量存储](/docs/api-reference/vector-stores/object) 的 ID, [文件](/docs/api-reference/files) 即附加至该向量存储。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象的一组 16 个键值对。这可用于 - 以结构化方式存储有关该对象的附加信息, - 格式,并通过API或仪表板查询对象。键是字符串 - ,最大长度为 64 个字符。值是字符串,最大 - 长度为 512 个字符、布尔值或数字。 + 可附加到对象的 16 个键值对。可用于 + 以结构化格式存储对象的附加信息,并通过 + API 或仪表板查询对象。键为字符串 + 最大长度为 64 个字符。值为字符串,每个值的最大 + 长度为 512 个字符,或为布尔值或数字。 - `string` @@ -116,7 +116,7 @@ - `chunking_strategy: optional StaticFileChunkingStrategyObject or OtherFileChunkingStrategyObject` - 用于对文件进行分块的策略。 + 用于对文件进行分块(chunking)的策略。 - `StaticFileChunkingStrategyObject object { static, type }` @@ -124,27 +124,27 @@ - `chunk_overlap_tokens: number` - 分块之间重叠的令牌数。默认值为 `400`. + 块(chunk)之间重叠的 token 数量。默认值为 `400`. - 请注意,重叠不得超过 `max_chunk_size_tokens`. + 注意,重叠部分不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个分块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块(chunk)的最大 token 数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` - 始终 `static`. + 始终为 `static`. - `"static"` - `OtherFileChunkingStrategyObject object { type }` - 当分块策略未知时返回此值。通常,这是因为文件是在 `chunking_strategy` 概念引入API之前被索引的。 + 当分块(chunking)策略未知时返回该值。通常是因为文件在被引入 API `chunking_strategy` 概念之前就已经被索引。 - `type: "other"` - 始终 `other`. + 始终为 `other`. - `"other"` diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md index 086e699..1d10308 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/retrieve.md @@ -1,10 +1,10 @@ -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 ## 检索向量存储文件 -**获取** `/vector_stores/{vector_store_id}/files/{file_id}` +**get** `/vector_stores/{vector_store_id}/files/{file_id}` -检索向量存储文件。 +检索一个向量存储文件。 ### 路径参数 @@ -20,19 +20,19 @@ - `id: string` - 标识符,可在API端点中引用。 + 该标识符,可在 API 端点中引用。 - `created_at: number` - 向量存储文件创建时的 Unix 时间戳(秒)。 + 向量存储文件创建时的 Unix 时间戳(以秒为单位)。 - `last_error: object { code, message } or null` - 与此向量存储文件关联的最后一个错误。如果无错误,将为 `null` 。 + 与此向量存储文件关联的最后一个错误。如果不存在错误则为 `null` 。 - `code: "server_error" or "unsupported_file" or "invalid_file"` - 其中一个为 `server_error`, `unsupported_file`,或 `invalid_file`. + 以下之一: `server_error`, `unsupported_file`,或 `invalid_file`. - `"server_error"` @@ -52,7 +52,7 @@ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件的状态,可以是 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示向量存储文件已准备好使用。 + 向量存储文件的状态,可为 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示该向量存储文件已可以使用。 - `"in_progress"` @@ -64,19 +64,19 @@ - `usage_bytes: number` - 向量存储的总使用量(字节)。请注意,这可能与原始文件大小不同。 + 向量存储的总使用量(以字节为单位)。请注意,这可能与原始文件大小不同。 - `vector_store_id: string` - 的 ID [向量存储](/docs/api-reference/vector-stores/object) , [文件](/docs/api-reference/files) 附加到该存储。 + 所附加到的 [向量存储](/docs/api-reference/vector-stores/object) 的 [File](/docs/api-reference/files) 的 ID。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象的 16 个键值对集合。这可以 - 可用于以结构化格式存储对象的附加信息,并 - 通过 API 或仪表板查询对象。键为字符串, - 最大长度为64个字符。值为字符串,最大 - 长度为512个字符、布尔值或数字。 + 可附加到对象的 16 组键值对。可用于 + 以结构化格式存储有关对象的额外信息 + format,以及通过 API 或控制面板查询对象。键为字符串, + 最大长度为 64 个字符。值为字符串,最大 + 长度为 512 个字符、布尔值或数字。 - `string` @@ -94,27 +94,27 @@ - `chunk_overlap_tokens: number` - 各分块之间重叠的令牌数量。默认值为 `400`. + 块之间重叠的 token 数。默认值为 `400`. - 请注意,重叠部分不得超过 `max_chunk_size_tokens`. + 请注意,重叠部分不得超过每个块大小 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个分块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个块中包含的最大 token 数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` - 始终 `static`. + 始终为 `static`. - `"static"` - `OtherFileChunkingStrategyObject object { type }` - 当分块策略未知时返回此值。通常,这是因为文件在 `chunking_strategy` 概念被引入 API 之前已被索引。 + 当分块策略未知时返回。通常是因为该文件在引入此概念之前已被索引到 `chunking_strategy` API 中。 - `type: "other"` - 始终 `other`. + 始终为 `other`. - `"other"` diff --git a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/update.md b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/update.md index 43e2c15..0104546 100644 --- a/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/update.md +++ b/docs/zh/api/reference/resources/vector_stores/subresources/files/methods/update.md @@ -1,4 +1,4 @@ -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加以下内容获取文档页面的 Markdown 版本: `.md` 以获取页面的 Markdown 版本。 ## 更新向量存储文件属性 @@ -16,11 +16,11 @@ - `attributes: map[string or number or boolean] or null` - 最多 16 个键值对,可附加到对象上。这些键值对 - 可用于以结构化格式存储有关对象的附加信息, - 并可通过 API 或仪表板查询对象。键是字符串, - 最大长度为 64 个字符。值是字符串,最大 - 长度为 512 个字符、布尔值或数字。 + 一组 16 个键值对,可附加到对象上。这可用于 + 以结构化形式存储对象的附加信息,并用于通过 + API 或仪表板查询对象。键为字符串, + 最大长度为 64 个字符。值为字符串(最大长度 + 512 个字符)、布尔值或数字。 - `string` @@ -28,7 +28,7 @@ - `boolean` -### 返回 +### Returns - `VectorStoreFile object { id, created_at, last_error, 6 more }` @@ -40,15 +40,15 @@ - `created_at: number` - 向量存储文件创建时的 Unix 时间戳(秒)。 + 向量存储文件创建时的 Unix 时间戳(以秒为单位)。 - `last_error: object { code, message } or null` - 与此向量存储文件关联的最后一个错误。若无错误,则为 `null` 。 + 与此向量存储文件关联的最后一个错误。如果没有错误,将为 `null` 。 - `code: "server_error" or "unsupported_file" or "invalid_file"` - 为 `server_error`, `unsupported_file`,或 `invalid_file`. + 以下之一: `server_error`, `unsupported_file`,或 `invalid_file`. - `"server_error"` @@ -68,7 +68,7 @@ - `status: "in_progress" or "completed" or "cancelled" or "failed"` - 向量存储文件的状态,可为 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示向量存储文件可供使用。 + 向量存储文件的状态,可以是 `in_progress`, `completed`, `cancelled`,或 `failed`。状态 `completed` 表示向量存储文件已可供使用。 - `"in_progress"` @@ -80,19 +80,19 @@ - `usage_bytes: number` - 向量存储的总使用量(字节)。请注意,这可能与原始文件大小不同。 + 向量存储的总使用量(以字节为单位)。请注意,这可能与原始文件大小不同。 - `vector_store_id: string` - 附加该 [向量存储](/docs/api-reference/vector-stores/object) 的 [文件](/docs/api-reference/files) 的 ID。 + 该 [向量存储](/docs/api-reference/vector-stores/object) 所附加到的 [File](/docs/api-reference/files) 的 ID。 - `attributes: optional map[string or number or boolean] or null` - 可附加到对象的 16 个键值对集合。这可以 - 用于以结构化格式存储关于对象的附加信息 - ,并可通过 API 或仪表盘查询对象。键是字符串 - ,最大长度为 64 个字符。值是字符串,最大 - 长度为 512 个字符、布尔值或数字。 + 一组 16 个键值对,可附加到对象上。这可用于 + 以结构化形式存储对象的附加信息,并用于通过 + API 或仪表板查询对象。键为字符串, + 最大长度为 64 个字符。值为字符串(最大长度 + 512 个字符)、布尔值或数字。 - `string` @@ -102,7 +102,7 @@ - `chunking_strategy: optional StaticFileChunkingStrategyObject or OtherFileChunkingStrategyObject` - 用于对文件进行分块的策略。 + 用于对文件进行分块(chunk)的策略。 - `StaticFileChunkingStrategyObject object { static, type }` @@ -110,13 +110,13 @@ - `chunk_overlap_tokens: number` - 分块之间重叠的令牌数。默认值为 `400`. + 块之间重叠的 token 数量。默认值为 `400`. - 请注意,重叠不得超过 `max_chunk_size_tokens`. + 请注意,重叠部分不得超过 `max_chunk_size_tokens`. - `max_chunk_size_tokens: number` - 每个分块中的最大令牌数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. + 每个区块中的最大 token 数。默认值为 `800`。最小值为 `100` ,最大值为 `4096`. - `type: "static"` @@ -126,7 +126,7 @@ - `OtherFileChunkingStrategyObject object { type }` - 当分块策略未知时返回此值。通常是因为文件在 `chunking_strategy` 概念引入 API 之前已建立索引。 + 当分块策略未知时返回此结果。通常,这是因为文件是在引入 `chunking_strategy` 概念的 API 之前被索引的。 - `type: "other"` diff --git a/docs/zh/api/reference/resources/videos/methods/create.md b/docs/zh/api/reference/resources/videos/methods/create.md index b443560..891bb9f 100644 --- a/docs/zh/api/reference/resources/videos/methods/create.md +++ b/docs/zh/api/reference/resources/videos/methods/create.md @@ -1,12 +1,12 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 末尾添加 `.md` 来获取。 -## 创建视频 +## Create video **post** `/videos` -根据提示词及可选参考素材创建新的视频生成任务。 +根据提示词和可选的参考素材创建一个新的视频生成任务。 -### 请求体参数 +### 正文参数 - `prompt: string` @@ -14,17 +14,17 @@ - `input_reference: optional ImageInputReferenceParam` - 可选的参考对象,用于引导生成。请精确提供 `image_url` 或 `file_id`. + 用于引导生成的可选参考对象。只能提供以下之一: `image_url` 或 `file_id`. - `file_id: optional string` - `image_url: optional string` - 完全限定的 URL 或 base64 编码的数据 URL。 + 完整的 URL 或 base64 编码的 data URL。 - `model: optional VideoModel` - 用于视频生成的模型(允许值:sora-2、sora-2-pro)。默认为 `sora-2`. + 要使用的视频生成模型(允许的值:sora-2、sora-2-pro)。默认值为 `sora-2`. - `string` @@ -42,7 +42,7 @@ - `seconds: optional VideoSeconds` - 片段时长(秒)(允许值:4、8、12)。默认为 4 秒。 + 片段时长(单位:秒,允许的值:4、8、12)。默认值为 4 秒。 - `"4"` @@ -52,7 +52,7 @@ - `size: optional VideoSize` - 输出分辨率,格式为宽 x 高(允许值:720x1280、1280x720、1024x1792、1792x1024)。默认为 720x1280。 + 输出分辨率,格式为 宽 x 高(允许的值:720x1280、1280x720、1024x1792、1792x1024)。默认值为 720x1280。 - `"720x1280"` @@ -62,7 +62,7 @@ - `"1792x1024"` -### 返回 +### Returns - `Video object { id, completed_at, created_at, 10 more }` @@ -74,7 +74,7 @@ - `completed_at: number or null` - 任务完成时的 Unix 时间戳(秒),如已完成。 + 任务完成时的 Unix 时间戳(秒),如果已完成。 - `created_at: number` @@ -82,7 +82,7 @@ - `error: VideoCreateError or null` - 错误负载,解释生成失败的原因(如适用)。 + 用于解释生成失败原因的错误负载,如果适用。 - `code: string` @@ -90,15 +90,15 @@ - `message: string` - 返回的可读错误描述。 + 返回错误的人类可读描述。 - `expires_at: number or null` - 可下载资产过期时的 Unix 时间戳(秒),如设置。 + 可下载资源到期时的 Unix 时间戳(秒),如果设置了的话。 - `model: VideoModel` - 生成该任务的视频生成模型。 + 用于生成该任务的视频生成模型。 - `string` @@ -130,15 +130,15 @@ - `remixed_from_video_id: string or null` - 如果此视频为混合版本,则为源视频的标识符。 + 如果该视频是二次创作,则为源视频的标识符。 - `seconds: string` - 生成剪辑的时长(秒)。对于扩展版本,这是拼接后的总时长。 + 生成片段的时长(以秒为单位)。对于扩展片段,这是拼接后的总时长。 - `size: VideoSize` - 生成视频的分辨率。 + 所生成视频的分辨率。 - `"720x1280"` diff --git a/docs/zh/api/reference/resources/videos/methods/delete.md b/docs/zh/api/reference/resources/videos/methods/delete.md index 67ec16e..adcea72 100644 --- a/docs/zh/api/reference/resources/videos/methods/delete.md +++ b/docs/zh/api/reference/resources/videos/methods/delete.md @@ -1,10 +1,10 @@ -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,可在页面 URL 末尾追加 `.md` 来获取。 ## 删除视频 -**删除** `/videos/{video_id}` +**delete** `/videos/{video_id}` -永久删除已完成的或失败的视频及其存储的资源。 +永久删除已完成或失败的视频及其存储资源。 ### 路径参数 @@ -18,15 +18,15 @@ - `deleted: boolean` - 表示该视频资源已被删除。 + 表示视频资源已被删除。 - `object: "video.deleted"` - 指示删除响应的对象类型。 + 表示删除响应的对象类型。 - `"video.deleted"` -### 示例 +### Example ```http curl https://api.openai.com/v1/videos/$VIDEO_ID \ @@ -34,7 +34,7 @@ curl https://api.openai.com/v1/videos/$VIDEO_ID \ -H "Authorization: Bearer $OPENAI_API_KEY" ``` -#### 响应 +#### Response ```json { diff --git a/docs/zh/api/reference/resources/videos/methods/list.md b/docs/zh/api/reference/resources/videos/methods/list.md index de9d1cd..2c8ca53 100644 --- a/docs/zh/api/reference/resources/videos/methods/list.md +++ b/docs/zh/api/reference/resources/videos/methods/list.md @@ -1,4 +1,4 @@ -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 ## 列出视频 @@ -10,7 +10,7 @@ - `after: optional string` - 上一分页请求中最后一项的标识符 + 上一次分页请求中最后一项的标识符 - `limit: optional number` @@ -18,33 +18,33 @@ - `order: optional "asc" or "desc"` - 按时间戳对结果进行排序。使用 `asc` 表示升序,或使用 `desc` 表示降序。 + 按时间戳排序的结果顺序。使用 `asc` 升序,或使用 `desc` 降序。 - `"asc"` - `"desc"` -### 返回值 +### Returns - `data: array of Video` - 项目列表 + 条目列表 - `id: string` - 视频作业的唯一标识符。 + 视频任务任务的唯一标识符。 - `completed_at: number or null` - 作业完成时的 Unix 时间戳(秒),若已完成。 + 任务完成时的 Unix 时间戳(秒),如果已完成。 - `created_at: number` - 作业创建时的 Unix 时间戳(秒)。 + 任务创建时的 Unix 时间戳(秒)。 - `error: VideoCreateError or null` - 错误负载,解释生成失败的原因(如适用)。 + 用于说明生成失败原因的错误负载(如适用)。 - `code: string` @@ -52,15 +52,15 @@ - `message: string` - 返回的人类可读错误描述。 + 返回的错误的人类可读描述。 - `expires_at: number or null` - 可下载资产过期时的 Unix 时间戳(秒),若已设置。 + 可下载资源过期的 Unix 时间戳(秒),如果已设置。 - `model: VideoModel` - 生成该作业的视频生成模型。 + 生成该任务的视频生成模型。 - `string` @@ -84,7 +84,7 @@ - `progress: number` - 生成任务的大致完成百分比。 + 生成任务的近似完成百分比。 - `prompt: string or null` @@ -92,11 +92,11 @@ - `remixed_from_video_id: string or null` - 如果此视频是混剪,则为源视频的标识符。 + 如果该视频为二次创作,则为源视频的标识符。 - `seconds: string` - 生成片段的时长(秒)。对于扩展,这是拼接后的总时长。 + 生成片段的时长(秒)。对于扩展片段,这是拼接后的总时长。 - `size: VideoSize` @@ -112,7 +112,7 @@ - `status: "queued" or "in_progress" or "completed" or "failed"` - 视频作业的当前生命周期状态。 + 视频任务的当前生命周期状态。 - `"queued"` @@ -124,19 +124,19 @@ - `first_id: string or null` - 列表中第一项的 ID。 + 列表中第一个条目的 ID。 - `has_more: boolean` - 是否还有更多可用项目。 + 是否还有更多可用条目。 - `last_id: string or null` - 列表中最后一项的 ID。 + 列表中最后一个条目的 ID。 - `object: "list"` - 返回对象的类型,必须为 `list`. + 返回的对象类型,必须为 `list`. - `"list"` diff --git a/docs/zh/api/reference/resources/videos/methods/retrieve.md b/docs/zh/api/reference/resources/videos/methods/retrieve.md index f3ad5ed..2f7d4ca 100644 --- a/docs/zh/api/reference/resources/videos/methods/retrieve.md +++ b/docs/zh/api/reference/resources/videos/methods/retrieve.md @@ -1,20 +1,20 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 -## 检索视频 +## Retrieve video **get** `/videos/{video_id}` -获取生成视频的最新元数据。 +获取已生成视频的最新元数据。 ### 路径参数 - `video_id: string` -### 返回 +### 返回值 - `Video object { id, completed_at, created_at, 10 more }` - 描述生成的视频任务的结构化信息。 + 描述已生成视频任务的结构化信息。 - `id: string` @@ -22,7 +22,7 @@ - `completed_at: number or null` - 任务完成时的 Unix 时间戳(秒),若已结束。 + 任务完成时的 Unix 时间戳(秒),如果已完成。 - `created_at: number` @@ -30,7 +30,7 @@ - `error: VideoCreateError or null` - 说明生成失败原因的错误负载(如适用)。 + 解释生成失败原因的错误负载,如果适用。 - `code: string` @@ -38,11 +38,11 @@ - `message: string` - 返回的人类可读错误描述。 + 返回的错误的人类可读描述。 - `expires_at: number or null` - 可下载资产过期时的 Unix 时间戳(秒),若已设置。 + 可下载资源过期时的 Unix 时间戳(秒),如果已设置。 - `model: VideoModel` @@ -78,11 +78,11 @@ - `remixed_from_video_id: string or null` - 若此视频为混剪,则为源视频的标识符。 + 如果该视频为混剪版本,则为源视频的标识符。 - `seconds: string` - 生成片段的时长(秒)。对于扩展,这是拼接后的总时长。 + 生成片段的时长(秒)。对于扩展版本,这是拼接后的总时长。 - `size: VideoSize` diff --git a/docs/zh/api/reference/resources/webhooks/methods/unwrap.md b/docs/zh/api/reference/resources/webhooks/methods/unwrap.md index eeab8f3..74001d9 100644 --- a/docs/zh/api/reference/resources/webhooks/methods/unwrap.md +++ b/docs/zh/api/reference/resources/webhooks/methods/unwrap.md @@ -1,7 +1,7 @@ -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 获取文档页面的 Markdown 版本。 ## **** `` -验证给定载荷是由 OpenAI 发送的,并解析该载荷。 +验证给定的载荷是否由 OpenAI 发送,并解析该载荷。