![]() |
Chilkat • HOME • Android™ • AutoIt • C • C# • C++ • Chilkat2-Python • CkPython • Classic ASP • DataFlex • Delphi DLL • Go • Java • Node.js • Objective-C • PHP Extension • Perl • PowerBuilder • PowerShell • PureBasic • Ruby • SQL Server • Swift • Tcl • Unicode C • Unicode C++ • VB.NET • VBScript • Visual Basic 6.0 • Visual FoxPro • Xojo Plugin
(PureBasic) OpenAI (ChatGPT) List ModelsSee more OpenAI ChatGPT ExamplesShow how to list available OpenAI models and shows how to parse the JSON model information.For more information, see https://platform.openai.com/docs/api-reference/models/list
IncludeFile "CkHttp.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i ; Implements the following CURL command: ; curl https://api.openai.com/v1/models \ ; -H "Authorization: Bearer $OPENAI_API_KEY" ; Use the following online tool to generate HTTP code from a CURL command ; Convert a cURL Command to HTTP Source Code ; Adds the "Authorization: Bearer $OPENAI_API_KEY" header. ; This is NOT a real key. Change the "sk-vi...." to your own key. CkHttp::setCkAuthToken(http, "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") sbResponseBody.i = CkStringBuilder::ckCreate() If sbResponseBody.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkHttp::ckQuickGetSb(http,"https://api.openai.com/v1/models",sbResponseBody) If success = 0 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkStringBuilder::ckDispose(sbResponseBody) ProcedureReturn EndIf jResp.i = CkJsonObject::ckCreate() If jResp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoadSb(jResp,sbResponseBody) CkJsonObject::setCkEmitCompact(jResp, 0) Debug "Response Body:" Debug CkJsonObject::ckEmit(jResp) respStatusCode.i = CkHttp::ckLastStatus(http) Debug "Response Status Code = " + Str(respStatusCode) If respStatusCode >= 400 Debug "Response Header:" Debug CkHttp::ckLastHeader(http) Debug "Failed." CkHttp::ckDispose(http) CkStringBuilder::ckDispose(sbResponseBody) CkJsonObject::ckDispose(jResp) ProcedureReturn EndIf ; Sample JSON response: ; (Sample code for parsing the JSON response is shown below) ; { ; "object": "list", ; "data": [ ; { ; "id": "babbage", ; "object": "model", ; "created": 1649358449, ; "owned_by": "openai", ; "permission": [ ; { ; "id": "modelperm-49FUp5v084tBB49tC4z8LPH5", ; "object": "model_permission", ; "created": 1669085501, ; "allow_create_engine": false, ; "allow_sampling": true, ; "allow_logprobs": true, ; "allow_search_indices": false, ; "allow_view": true, ; "allow_fine_tuning": false, ; "organization": "*", ; "group": null, ; "is_blocking": false ; } ; ], ; "root": "babbage", ; "parent": null ; }, ; { ; "id": "davinci", ; "object": "model", ; "created": 1649359874, ; "owned_by": "openai", ; "permission": [ ; { ; "id": "modelperm-U6ZwlyAd0LyMk4rcMdz33Yc3", ; "object": "model_permission", ; "created": 1669066355, ; "allow_create_engine": false, ; "allow_sampling": true, ; "allow_logprobs": true, ; "allow_search_indices": false, ; "allow_view": true, ; "allow_fine_tuning": false, ; "organization": "*", ; "group": null, ; "is_blocking": false ; } ; ], ; "root": "davinci", ; "parent": null ; }, ; ... ; ... ; Sample code for parsing the JSON response... ; Use the following online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON id.s created.i owned_by.s root.s parent.s j.i count_j.i allow_create_engine.i allow_sampling.i allow_logprobs.i allow_search_indices.i allow_view.i allow_fine_tuning.i organization.s group.s is_blocking.i v_object.s = CkJsonObject::ckStringOf(jResp,"object") i.i = 0 count_i.i = CkJsonObject::ckSizeOfArray(jResp,"data") While i < count_i CkJsonObject::setCkI(jResp, i) id = CkJsonObject::ckStringOf(jResp,"data[i].id") v_object = CkJsonObject::ckStringOf(jResp,"data[i].object") created = CkJsonObject::ckIntOf(jResp,"data[i].created") owned_by = CkJsonObject::ckStringOf(jResp,"data[i].owned_by") root = CkJsonObject::ckStringOf(jResp,"data[i].root") parent = CkJsonObject::ckStringOf(jResp,"data[i].parent") j = 0 count_j = CkJsonObject::ckSizeOfArray(jResp,"data[i].permission") While j < count_j CkJsonObject::setCkJ(jResp, j) id = CkJsonObject::ckStringOf(jResp,"data[i].permission[j].id") v_object = CkJsonObject::ckStringOf(jResp,"data[i].permission[j].object") created = CkJsonObject::ckIntOf(jResp,"data[i].permission[j].created") allow_create_engine = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].allow_create_engine") allow_sampling = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].allow_sampling") allow_logprobs = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].allow_logprobs") allow_search_indices = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].allow_search_indices") allow_view = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].allow_view") allow_fine_tuning = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].allow_fine_tuning") organization = CkJsonObject::ckStringOf(jResp,"data[i].permission[j].organization") group = CkJsonObject::ckStringOf(jResp,"data[i].permission[j].group") is_blocking = CkJsonObject::ckBoolOf(jResp,"data[i].permission[j].is_blocking") j = j + 1 Wend i = i + 1 Wend CkHttp::ckDispose(http) CkStringBuilder::ckDispose(sbResponseBody) CkJsonObject::ckDispose(jResp) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.