From f4f615dfdf04736d92187762283ff64f36c6709b Mon Sep 17 00:00:00 2001 From: "redev.rx" Date: Thu, 1 Feb 2024 13:46:57 +0700 Subject: [PATCH] complete new features --- lib/chat_gpt_sdk.dart | 9 +++- lib/src/model/message/response/content.dart | 6 +-- .../response/{text.dart => text_data.dart} | 6 +-- .../run/response/create_run_response.dart | 2 +- .../model/run/response/message_creation.dart | 6 +-- lib/src/model/run/response/tool.dart | 15 ------- lib/src/model/run/response/usage.dart | 24 ----------- lib/src/runs.dart | 41 ++++++++++++++++++- 8 files changed, 58 insertions(+), 51 deletions(-) rename lib/src/model/message/response/{text.dart => text_data.dart} (81%) delete mode 100644 lib/src/model/run/response/tool.dart delete mode 100644 lib/src/model/run/response/usage.dart diff --git a/lib/chat_gpt_sdk.dart b/lib/chat_gpt_sdk.dart index 27ebd43..bf74f49 100644 --- a/lib/chat_gpt_sdk.dart +++ b/lib/chat_gpt_sdk.dart @@ -62,4 +62,11 @@ export 'src/model/message/response/create_message_response.dart'; export 'src/model/message/response/list_message_file.dart'; export 'src/model/message/response/list_message_file_data.dart'; export 'src/model/message/response/message_data.dart'; -export 'src/model/message/response/text.dart'; +export 'src/model/message/response/text_data.dart'; +export 'src/model/run/request/create_run.dart'; +export 'src/model/run/request/create_thread_and_run.dart'; +export 'src/model/run/response/create_run_response.dart'; +export 'src/model/run/response/create_thread_and_run_data.dart'; +export 'src/model/run/response/list_run.dart'; +export 'src/model/run/response/message_creation.dart'; +export 'src/model/run/response/step_detail.dart'; diff --git a/lib/src/model/message/response/content.dart b/lib/src/model/message/response/content.dart index 5892dda..5e9ea6d 100644 --- a/lib/src/model/message/response/content.dart +++ b/lib/src/model/message/response/content.dart @@ -1,4 +1,4 @@ -import 'package:chat_gpt_sdk/src/model/message/response/text.dart'; +import 'package:chat_gpt_sdk/src/model/message/response/text_data.dart'; class Content { Content({ @@ -6,11 +6,11 @@ class Content { required this.type, }); - Text? text; + TextData? text; String type; factory Content.fromJson(Map json) => Content( - text: json["text"] == null ? null : Text.fromJson(json["text"]), + text: json["text"] == null ? null : TextData.fromJson(json["text"]), type: json["type"] ?? '', ); diff --git a/lib/src/model/message/response/text.dart b/lib/src/model/message/response/text_data.dart similarity index 81% rename from lib/src/model/message/response/text.dart rename to lib/src/model/message/response/text_data.dart index 5254347..2c41257 100644 --- a/lib/src/model/message/response/text.dart +++ b/lib/src/model/message/response/text_data.dart @@ -1,5 +1,5 @@ -class Text { - Text({ +class TextData { + TextData({ required this.annotations, required this.value, }); @@ -7,7 +7,7 @@ class Text { List annotations; String value; - factory Text.fromJson(Map json) => Text( + factory TextData.fromJson(Map json) => TextData( annotations: json["annotations"] == null ? [] : List.from(json["annotations"].map((x) => x)), diff --git a/lib/src/model/run/response/create_run_response.dart b/lib/src/model/run/response/create_run_response.dart index a9afcc3..e880d64 100644 --- a/lib/src/model/run/response/create_run_response.dart +++ b/lib/src/model/run/response/create_run_response.dart @@ -1,6 +1,6 @@ import 'package:chat_gpt_sdk/src/model/assistant/response/tool.dart'; +import 'package:chat_gpt_sdk/src/model/complete_text/response/usage.dart'; import 'package:chat_gpt_sdk/src/model/run/response/step_detail.dart'; -import 'package:chat_gpt_sdk/src/model/run/response/usage.dart'; class CreateRunResponse { CreateRunResponse({ diff --git a/lib/src/model/run/response/message_creation.dart b/lib/src/model/run/response/message_creation.dart index 8b17ee6..1c00ec9 100644 --- a/lib/src/model/run/response/message_creation.dart +++ b/lib/src/model/run/response/message_creation.dart @@ -11,6 +11,6 @@ class MessageCreation { ); Map toJson() => { - "message_id": messageId, - }; -} \ No newline at end of file + "message_id": messageId, + }; +} diff --git a/lib/src/model/run/response/tool.dart b/lib/src/model/run/response/tool.dart deleted file mode 100644 index 1b5a9f5..0000000 --- a/lib/src/model/run/response/tool.dart +++ /dev/null @@ -1,15 +0,0 @@ -class Tool { - Tool({ - required this.type, - }); - - String type; - - factory Tool.fromJson(Map json) => Tool( - type: json["type"], - ); - - Map toJson() => { - "type": type, - }; -} \ No newline at end of file diff --git a/lib/src/model/run/response/usage.dart b/lib/src/model/run/response/usage.dart deleted file mode 100644 index 925f308..0000000 --- a/lib/src/model/run/response/usage.dart +++ /dev/null @@ -1,24 +0,0 @@ - -class Usage { - Usage({ - required this.completionTokens, - required this.promptTokens, - required this.totalTokens, - }); - - int completionTokens; - int promptTokens; - int totalTokens; - - factory Usage.fromJson(Map json) => Usage( - completionTokens: json["completion_tokens"] ?? 0, - promptTokens: json["prompt_tokens"] ?? 0, - totalTokens: json["total_tokens"] ?? 0, - ); - - Map toJson() => { - "completion_tokens": completionTokens, - "prompt_tokens": promptTokens, - "total_tokens": totalTokens, - }; -} \ No newline at end of file diff --git a/lib/src/runs.dart b/lib/src/runs.dart index 67ad698..4c4abcb 100644 --- a/lib/src/runs.dart +++ b/lib/src/runs.dart @@ -1,10 +1,10 @@ -import 'package:chat_gpt_sdk/chat_gpt_sdk.dart'; import 'package:chat_gpt_sdk/src/client/client.dart'; import 'package:chat_gpt_sdk/src/model/run/request/create_run.dart'; import 'package:chat_gpt_sdk/src/model/run/request/create_thread_and_run.dart'; import 'package:chat_gpt_sdk/src/model/run/response/create_run_response.dart'; import 'package:chat_gpt_sdk/src/model/run/response/create_thread_and_run_data.dart'; import 'package:chat_gpt_sdk/src/model/run/response/list_run.dart'; +import 'package:chat_gpt_sdk/src/utils/constants.dart'; class Runs { final OpenAIClient _client; @@ -134,4 +134,43 @@ class Runs { onCancel: (cancelData) => null, ); } + + /// + /// When a run has the status: "requires_action" + /// and required_action.type is submit_tool_outputs, + /// this endpoint can be used to submit the outputs from + /// the tool calls once they're all completed. + /// All outputs must be submitted in a single request. + /// [submitToolOutputsToRun] + Future submitToolOutputsToRun({ + required String threadId, + required String runId, + required List> toolOutputs, + }) { + return _client.post( + _client.apiUrl + "$kThread/$threadId/$kRuns/$runId/submit_tool_outputs", + { + 'tool_outputs': toolOutputs, + }, + headers: _headers, + onSuccess: CreateRunResponse.fromJson, + onCancel: (cancelData) => null, + ); + } + + /// + /// Cancels a run that is in_progress. + /// [cancelRun] + Future cancelRun({ + required String threadId, + required String runId, + }) { + return _client.post( + _client.apiUrl + "$kThread/$threadId/$kRuns/$runId/cancel", + {}, + headers: _headers, + onSuccess: CreateRunResponse.fromJson, + onCancel: (cancelData) => null, + ); + } }