{"id":13645719,"url":"https://github.com/redevrx/chat_gpt_sdk","last_synced_at":"2026-01-11T04:49:21.061Z","repository":{"id":65125464,"uuid":"582374074","full_name":"redevrx/chat_gpt_sdk","owner":"redevrx","description":"Flutter ChatGPT","archived":false,"fork":false,"pushed_at":"2025-04-16T03:11:26.000Z","size":9887,"stargazers_count":343,"open_issues_count":21,"forks_count":177,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-16T04:33:11.989Z","etag":null,"topics":["android","dart","flutter","gpt-3","gpt-4","ios","openai"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/chat_gpt_sdk","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redevrx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-26T16:13:40.000Z","updated_at":"2025-04-16T03:11:30.000Z","dependencies_parsed_at":"2023-02-15T22:30:55.689Z","dependency_job_id":"96df7177-27fb-4b73-bf78-aef85ae79e30","html_url":"https://github.com/redevrx/chat_gpt_sdk","commit_stats":{"total_commits":245,"total_committers":17,"mean_commits":"14.411764705882353","dds":0.4816326530612245,"last_synced_commit":"14487c6a32abb7ad79229df27d6004487ec98688"},"previous_names":["redevrx/flutter-chatgpt"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redevrx%2Fchat_gpt_sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redevrx%2Fchat_gpt_sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redevrx%2Fchat_gpt_sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redevrx%2Fchat_gpt_sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redevrx","download_url":"https://codeload.github.com/redevrx/chat_gpt_sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254374475,"owners_count":22060611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","dart","flutter","gpt-3","gpt-4","ios","openai"],"created_at":"2024-08-02T01:02:40.466Z","updated_at":"2026-01-11T04:49:21.050Z","avatar_url":"https://github.com/redevrx.png","language":"Dart","funding_links":[],"categories":["Openai"],"sub_categories":[],"readme":"# ChatGPT Application with flutter\nChatGPT is a chat-bot launched by OpenAI in November 2022. It is built on top\nof OpenAI's GPT-3.5 family of large language models, and is fine-tuned with both\nsupervised and reinforcement learning techniques.\n\n## Unofficial\n\"community-maintained” library.\n\n# OpenAI Powerful Library Support GPT-4\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/m/redevRx/Flutter-ChatGPT\"\u003e\n\u003cimg alt=\"GitHub contributors\" src=\"https://img.shields.io/github/contributors/redevRx/Flutter-ChatGPT\"\u003e\n\u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/redevRx/Flutter-ChatGPT?style=social\"\u003e\n\u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/redevRx/Flutter-ChatGPT/dart.yml?label=tests\"\u003e\n\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/redevRx/Flutter-ChatGPT\"\u003e\n\u003cimg alt=\"Pub Points\" src=\"https://img.shields.io/pub/points/chat_gpt_sdk\"\u003e\n\u003cimg alt=\"Pub Popularity\" src=\"https://img.shields.io/pub/popularity/chat_gpt_sdk\"\u003e\n\u003cimg alt=\"Pub Likes\" src=\"https://img.shields.io/pub/likes/chat_gpt_sdk\"\u003e\n\u003cimg alt=\"Pub Version\" src=\"https://img.shields.io/pub/v/chat_gpt_sdk\"\u003e\n\u003cimg alt=\"Code Coverage\" src=\"https://img.shields.io/codecov/c/github/redevrx/chat_gpt_sdk?logo=codecov\u0026color\"\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n\n\n## Features\n\n- [x] [Install Package](#install-package)\n- [x] [Create OpenAI Instance](#create-openai-instance)\n- [x] [Change Access Token](#change-access-token)\n- [x] [Complete Text](#complete-text)\n  - [Complete with Future](#Complete-with-feature) \n  - [Support Server Sent Event](#gpt-3-with-sse)\n- [x] [Chat Complete GPT-4](#chat-complete-gpt-4-and-gpt-35)\n  - [Support GPT3.5 and GPT-4](#chat-complete)\n  - [Support Server Sent Event](#gpt-4-with-sse)\n  - [Support Function Calling](#Chat-Complete-Function-Calling)\n  - [Chat Complete Image Input](#Chat-Complete-Image-Input)\n- [x] [Assistants API](#assistants)\n  - [Create assistant](#create-assistant)\n  - [Create assistant file](#create-assistant-file) \n  - [List assistants](#list-assistants)\n  - [List assistant files](#list-assistants-files)\n  - [Retrieve assistant](#retrieve-assistant)\n  - [Retrieve assistant file](#retrieve-assistant-file)\n  - [Modify assistant](#modify-assistant)\n  - [Delete assistant](#delete-assistant)\n  - [Delete assistant file](#delete-assistant-file)\n  - [Using Assistants V2](#using-assistant-v2)\n- [Threads](#threads)\n  - [Create thread](#Create-threads)\n  - [Retrieve thread](#Retrieve-thread)\n  - [Modify thread](#Modify-thread)\n  - [Delete thread](#Delete-thread)\n  - [Using Thread V2](#using-thread-v2)\n- [Messages](#messages)\n  - [Create message](#Create-message)\n  - [List messages](#List-messages)\n  - [List message files](#List-message-files)\n  - [Retrieve message](#Retrieve-message)\n  - [Retrieve message file](#Retrieve-message-file)\n  - [Modify message](#Modify-message)\n  - [Using Message V2](#using-message-v2)\n- [Runs](#runs)\n  - [Create run](#Create-run)\n  - [Create thread and run](#Create-thread-and-run)\n  - [List runs](#List-runs)\n  - [List run steps](#List-run-steps)\n  - [Retrieve run](#Retrieve-run)\n  - [Retrieve run step](#Retrieve-run-step)\n  - [Modify run](#Modify-run)\n  - [Submit tool outputs to run](#Submit-tool-outputs-to-run)\n  - [Cancel a run](#Cancel-a-run)\n- [x] [Error Handle](#error-handle)\n- [x] [Example Q\u0026A](#qa)\n- [x] [Generate Image With Prompt](#generate-image-with-prompt)\n- [x] [Editing](#edit)\n  - [Edit Prompt](#Edit-Prompt)\n  - [Edit Image](#Edit-Image)\n  - [Variations](#Variations)\n- [x] [Cancel Generate](#cancel-generate)\n  - [Stop Generate Prompt](#Stop-Generate-Prompt)\n  - [Stop Edit](#Stop-Edit)\n  - [Stop Embedding](#Stop-Embedding)\n- [x] [File](#file)\n  - [Get File](#Get-File)\n  - [Upload File](#Upload-File)\n  - [Delete File](#Delete-File)\n  - [Retrieve File](#Retrieve-File)\n  - [Retrieve Content File](#Retrieve-Content-File)\n- [x] [Audio](#audio)\n  - [Audio Translate](#Audio-Translate)\n  - [Audio Transcribe](#Audio-Transcribe)\n  - [Create speech](#Create-speech)\n- [x] [Embedding](#embedding)\n- [x] [Fine-Tune](#fine-tune)\n  - [Create Fine Tune](#Create-Fine-Tune) \n  - [Fine Tune List](#Fine-Tune-List)\n  - [Fine Tune List Stream (SSE)](#Fine-Tune-List-Stream)\n  - [Fine Tune Get by Id](#Fine-Tune-Get-by-Id)\n  - [Cancel Fine Tune](#Cancel-Fine-Tune)\n  - [Delete Fine Tune](#Delete-Fine-Tune)\n  - Fine-Tune Deprecate\n  - New Fine-Tune Job\n- [x] [Moderations](#Moderations)\n  - [Create Moderation](#Create-Moderation)\n- [x] [Model And Engine](#modelengine)\n- [x] [Translate Example](#translate-app)\n- [x] [Video Tutorial](#video-tutorials)\n- [x] [Docs](#docs-support-thai)\n\n\n\n## Install Package\n```dart\nchat_gpt_sdk: 3.1.5\n```\n\n## Create OpenAI Instance\n\n - Parameter\n   - Token\n     - Your secret API keys are listed below. Please note that we do not display your secret API keys again after you generate them. \n     - Do not share your API key with others, or expose it in the browser or other client-side code. In order to protect the security of your account, OpenAI may also automatically rotate any API key that we've found has leaked publicly.\n     - https://beta.openai.com/account/api-keys\n  - OrgId\n     - Identifier for this organization sometimes used in API requests\n     - https://beta.openai.com/account/org-settings\n\n```dart\nfinal openAI = OpenAI.instance.build(token: token,baseOption: HttpSetup(receiveTimeout: const Duration(seconds: 5)),enableLog: true);\n```\n## Change Access Token\n\n```dart\nopenAI.setToken('new-access-token');\n///get token\nopenAI.token;\n```\n\n## Complete Text\n- Text Complete API\n  - Translate Method\n    - translateEngToThai\n    - translateThaiToEng\n    - translateToJapanese\n  - Model\n    - kTranslateModelV3\n    - kTranslateModelV2\n    - kCodeTranslateModelV2\n      - Translate natural language to SQL queries.\n      - Create code to call the Stripe API using natural language.\n      - Find the time complexity of a function.\n  - https://beta.openai.com/examples\n\n- ### Complete with Feature\n\n```dart\n  void _translateEngToThai() async{\n  final request = CompleteText(\n          prompt: translateEngToThai(word: _txtWord.text.toString()),\n          maxToken: 200,\n          model: TextDavinci3Model());\n\n  final response = await openAI.onCompletion(request: request);\n  \n  ///cancel request\n  openAI.cancelAIGenerate();\n  print(response);\n}\n```\n\n- Complete with FutureBuilder\n```dart\nFuture\u003cCTResponse?\u003e? _translateFuture;\n\n_translateFuture = openAI.onCompletion(request: request);\n\n///ui code\nFutureBuilder\u003cCTResponse?\u003e(\n future: _translateFuture,\n builder: (context, snapshot) {\n   final data = snapshot.data;\n   if(snapshot.connectionState == ConnectionState.done) return something \n   if(snapshot.connectionState == ConnectionState.waiting) return something\n   return something\n})\n```\n\n- ### GPT 3 with SSE\n```dart\n void completeWithSSE() {\n  final request = CompleteText(\n          prompt: \"Hello world\", maxTokens: 200, model: TextDavinci3Model());\n  openAI.onCompletionSSE(request: request).listen((it) {\n    debugPrint(it.choices.last.text);\n  });\n}\n```\n\n## Chat Complete (GPT-4 and GPT-3.5)\n\n- ### Chat Complete\n```dart\n  void chatComplete() async {\n    final request = ChatCompleteText(messages: [\n      Map.of({\"role\": \"user\", \"content\": 'Hello!'})\n    ], maxToken: 200, model: Gpt4ChatModel());\n\n    final response = await openAI.onChatCompletion(request: request);\n    for (var element in response!.choices) {\n      print(\"data -\u003e ${element.message?.content}\");\n    }\n  }\n```\n\n- ### GPT 4 with SSE\n```dart\n void chatCompleteWithSSE() {\n  final request = ChatCompleteText(messages: [\n    Map.of({\"role\": \"user\", \"content\": 'Hello!'})\n  ], maxToken: 200, model: Gpt4ChatModel());\n\n  openAI.onChatCompletionSSE(request: request).listen((it) {\n    debugPrint(it.choices.last.message?.content);\n  });\n}\n```\n\n- Support SSE(Server Send Event)\n  - GPT-3.5 Turbo\n```dart\n void chatCompleteWithSSE() {\n  final request = ChatCompleteText(messages: [\n    Map.of({\"role\": \"user\", \"content\": 'Hello!'})\n  ], maxToken: 200, model: GptTurboChatModel());\n\n  openAI.onChatCompletionSSE(request: request).listen((it) {\n    debugPrint(it.choices.last.message?.content);\n  });\n}\n```\n- Chat Complete\n\n```dart\n  void chatComplete() async {\n    final request = ChatCompleteText(messages: [\n      Map.of({\"role\": \"user\", \"content\": 'Hello!'})\n    ], maxToken: 200, model: Gpt41106PreviewChatModel());\n\n    final response = await openAI.onChatCompletion(request: request);\n    for (var element in response!.choices) {\n      print(\"data -\u003e ${element.message?.content}\");\n    }\n  }\n```\n\n- ### Chat Complete Function Calling\n\n```dart\n  void gptFunctionCalling() async {\n    final request = ChatCompleteText(\n      messages: [\n        Messages(\n                role: Role.user,\n                content: \"What is the weather like in Boston?\",\n                name: \"get_current_weather\"),\n      ],\n      maxToken: 200,\n      model: Gpt41106PreviewChatModel(),\n      tools: [\n        {\n          \"type\": \"function\",\n          \"function\": {\n            \"name\": \"get_current_weather\",\n            \"description\": \"Get the current weather in a given location\",\n            \"parameters\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"location\": {\n                  \"type\": \"string\",\n                  \"description\": \"The city and state, e.g. San Francisco, CA\"\n                },\n                \"unit\": {\n                  \"type\": \"string\",\n                  \"enum\": [\"celsius\", \"fahrenheit\"]\n                }\n              },\n              \"required\": [\"location\"]\n            }\n          }\n        }\n      ],\n      toolChoice: 'auto',\n    );\n\n    ChatCTResponse? response = await openAI.onChatCompletion(request: request);\n}\n```\n\n- ### Chat Complete Image Input\n\n```dart\n  void imageInput() async {\n  final request = ChatCompleteText(\n    messages: [\n      {\n        \"role\": \"user\",\n        \"content\": [\n          {\"type\": \"text\", \"text\": \"What’s in this image?\"},\n          {\n            \"type\": \"image_url\",\n            \"image_url\": {\"url\": \"image-url\"}\n          }\n        ]\n      }\n    ],\n    maxToken: 200,\n    model: Gpt4VisionPreviewChatModel(),\n  );\n\n  ChatCTResponse? response = await openAI.onChatCompletion(request: request);\n  debugPrint(\"$response\");\n}\n```\n\n## Assistants\n- ### Create Assistant\n```dart\n  void createAssistant() async {\n  final assistant = Assistant(\n    model: Gpt4AModel(),\n    name: 'Math Tutor',\n    instructions:\n    'You are a personal math tutor. When asked a question, write and run Python code to answer the question.',\n    tools: [\n      {\n        \"type\": \"code_interpreter\",\n      }\n    ],\n  );\n  await openAI.assistant.create(assistant: assistant);\n}\n\n```\n\n- ### Create Assistant File\n```dart\nvoid createAssistantFile() async {\n  await openAI.assistant.createFile(assistantId: '',fileId: '',);\n}\n```\n\n- ### List assistants\n```dart\n  void listAssistant() async {\n  final assistants = await openAI.assistant.list();\n  assistants.map((e) =\u003e e.toJson()).forEach(print);\n}\n```\n\n- ### List assistants files\n```dart\n  void listAssistantFile() async {\n  final assistants = await openAI.assistant.listFile(assistantId: '');\n  assistants.data.map((e) =\u003e e.toJson()).forEach(print);\n}\n```\n\n- ### Retrieve assistant\n```dart\n  void retrieveAssistant() async {\n  final assistants = await openAI.assistant.retrieves(assistantId: '');\n}\n```\n\n- ### Retrieve assistant file\n```dart\n  void retrieveAssistantFiles() async {\n  final assistants = await openAI.assistant.retrievesFile(assistantId: '',fileId: '');\n}\n```\n\n- ### Modify assistant\n```dart\n  void modifyAssistant() async {\n  final assistant = Assistant(\n    model: Gpt4AModel(),\n    instructions:\n    'You are an HR bot, and you have access to files to answer employee questions about company policies. Always response with info from either of the files.',\n    tools: [\n      {\n        \"type\": \"retrieval\",\n      }\n    ],\n    fileIds: [\n      \"file-abc123\",\n      \"file-abc456\",\n    ],\n  );\n  await openAI.assistant.modifies(assistantId: '', assistant: assistant);\n}\n```\n\n- ### Delete assistant\n```dart\n  void deleteAssistant() async {\n  await openAI.assistant.delete(assistantId: '');\n}\n```\n\n- ### Delete assistant file\n```dart\n  void deleteAssistantFile() async {\n  await openAI.assistant.deleteFile(assistantId: '',fileId: '');\n}\n```\n\n- ## Using assistant v2\n```dart\nopenAI.assistant.v2;\n```\n\n## Threads\n - ### Create threads\n```dart\n///empty body\n  void createThreads()async {\n  await openAI.threads.createThread(request: ThreadRequest());\n}\n\n///with message\nvoid createThreads() async {\n  final request = ThreadRequest(messages: [\n    {\n      \"role\": \"user\",\n      \"content\": \"Hello, what is AI?\",\n      \"file_ids\": [\"file-abc123\"]\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"How does AI work? Explain it in simple terms.\"\n    },\n  ]);\n\n  await openAI.threads.createThread(request: request);\n}\n```\n\n- ### Retrieve thread\n```dart\n void retrieveThread()async {\n  final mThread = await openAI.threads.retrieveThread(threadId: 'threadId');\n}\n```\n\n- ### Modify thread\n```dart\n  void modifyThread() async {\n  await openAI.threads.modifyThread(threadId: 'threadId', metadata: {\n    \"metadata\": {\n      \"modified\": \"true\",\n      \"user\": \"abc123\",\n    },\n  });\n}\n```\n\n- ### Delete thread\n```dart\n  void deleteThread() async {\n  await openAI.threads.deleteThread(threadId: 'threadId');\n}\n```\n\n- ## Using Thread V2\n```dart\nopenAI.threads.v2;\n```\n\n## Messages\n- ### Create Message\n```dart\nvoid createMessage() async {\n  final request = CreateMessage(\n    role: 'user',\n    content: 'How does AI work? Explain it in simple terms.',\n  );\n  await openAI.threads.messages.createMessage(\n    threadId: 'threadId',\n    request: request,\n  );\n}\n```\n\n- ### List messages\n```dart\n  void listMessage()async {\n  final mMessages = await openAI.threads.messages.listMessage(threadId: 'threadId');\n}\n```\n- ### List message files\n```dart\n  void listMessageFile() async {\n  final mMessagesFile = await openAI.threads.messages.listMessageFile(\n    threadId: 'threadId',\n    messageId: '',\n  );\n}\n```\n\n- ### Retrieve message\n```dart\n  void retrieveMessage() async {\n  final mMessage = await openAI.threads.messages.retrieveMessage(\n    threadId: 'threadId',\n    messageId: '',\n  );\n}\n```\n\n- ### Retrieve message file\n```dart\nvoid retrieveMessageFile() async {\n  final mMessageFile = await openAI.threads.messages.retrieveMessageFile(\n    threadId: 'threadId',\n    messageId: '',\n    fileId: '',\n  );\n}\n```\n\n- ### Modify message\n```dart\n  void modifyMessage() async {\n  await openAI.threads.messages.modifyMessage(\n    threadId: 'threadId',\n    messageId: 'messageId',\n    metadata: {\n      \"metadata\": {\"modified\": \"true\", \"user\": \"abc123\"},\n    },\n  );\n}\n```\n\n- ## Using Message V2\n```dart\nopenAI.threads.v2.messages;\n```\n\n## Runs\n- ### Create run\n```dart\nvoid createRun() async {\n    final request = CreateRun(assistantId: 'assistantId');\n    await openAI.threads.runs.createRun(threadId: 'threadId', request: request);\n  }\n```\n\n- ### Create thread and run\n```dart\n  void createThreadAndRun() async {\n    final request = CreateThreadAndRun(assistantId: 'assistantId', thread: {\n      \"messages\": [\n        {\"role\": \"user\", \"content\": \"Explain deep learning to a 5 year old.\"}\n      ],\n    });\n    await openAI.threads.runs.createThreadAndRun(request: request);\n  }\n```\n\n- ### List runs\n```dart\n void listRuns() async {\n   final mRuns = await openAI.threads.runs.listRuns(threadId: 'threadId');\n  }\n```\n\n- ### List run steps\n```dart\nvoid listRunSteps() async {\n   final mRunSteps = await openAI.threads.runs.listRunSteps(threadId: 'threadId',runId: '',);\n  }\n```\n\n- ### Retrieve run\n```dart\nvoid retrieveRun() async {\n   final mRun = await openAI.threads.runs.retrieveRun(threadId: 'threadId',runId: '',);\n  }\n```\n\n- ### Retrieve run step\n```dart\n void retrieveRunStep() async {\n   final mRun = await openAI.threads.runs.retrieveRunStep(threadId: 'threadId',runId: '',stepId: '');\n  }\n```\n\n- ### Modify run\n```dart\nvoid modifyRun() async {\n    await openAI.threads.runs.modifyRun(\n      threadId: 'threadId',\n      runId: '',\n      metadata: {\n        \"metadata\": {\"user_id\": \"user_abc123\"},\n      },\n    );\n  }\n```\n\n- ### Submit tool outputs to run\n```dart\n  void submitToolOutputsToRun() async {\n    await openAI.threads.runs.submitToolOutputsToRun(\n      threadId: 'threadId',\n      runId: '',\n      toolOutputs: [\n        {\n          \"tool_call_id\": \"call_abc123\",\n          \"output\": \"28C\",\n        },\n      ],\n    );\n  }\n```\n\n- ### Cancel a run\n```dart\n  void cancelRun() async {\n    await openAI.threads.runs.cancelRun(\n      threadId: 'threadId',\n      runId: '',\n    );\n  }\n\n```\n\n## Error Handle\n\n```dart\n///using catchError\n openAI.onCompletion(request: request)\n    .catchError((err){\n      if(err is OpenAIAuthError){\n        print('OpenAIAuthError error ${err.data?.error?.toMap()}');\n      }\n      if(err is OpenAIRateLimitError){\n        print('OpenAIRateLimitError error ${err.data?.error?.toMap()}');\n      }\n      if(err is OpenAIServerError){\n        print('OpenAIServerError error ${err.data?.error?.toMap()}');\n      }\n      });\n\n///using try catch\n try {\n   await openAI.onCompletion(request: request);\n } on OpenAIRateLimitError catch (err) {\n   print('catch error -\u003e${err.data?.error?.toMap()}');\n }\n\n///with stream\n openAI\n        .onCompletionSSE(request: request)\n        .transform(StreamTransformer.fromHandlers(\n          handleError: (error, stackTrace, sink) {\n              if (error is OpenAIRateLimitError) {\n              print('OpenAIRateLimitError error -\u003e${error.data?.message}');\n              }}))\n        .listen((event) {\n          print(\"success\");\n        });\n```\n\n## Q\u0026A\n- Example Q\u0026A \n  - Answer questions based on existing knowledge.\n```dart\nfinal request = CompleteText(prompt:'What is human life expectancy in the United States?'),\n                model: TextDavinci3Model(), maxTokens: 200);\n\n final response = await openAI.onCompletion(request:request);\n```\n- Request\n \n```dart\nQ: What is human life expectancy in the United States?\n```\n\n- Response\n\n```dart\nA: Human life expectancy in the United States is 78 years.\n```\n\n## Generate Image With Prompt\n\n- Generate Image\n  - prompt\n    - A text description of the desired image(s). The maximum length is 1000 characters.\n  - n\n    - The number of images to generate. Must be between 1 and 10.\n  - size\n    - The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024.\n  - response_format\n    - The format in which the generated images are returned. Must be one of url or b64_json.\n  - user\n    - A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.\n- \n\n- ### Generate with feature\n```dart\n  void _generateImage() {\n  const prompt = \"cat eating snake blue red.\";\n\n  final request = GenerateImage( model: DallE2(),prompt, 1,size: ImageSize.size256,\n          responseFormat: Format.url);\n  final response = openAI.generateImage(request);\n  print(\"img url :${response.data?.last?.url}\");\n}\n```\n\n## Edit\n- ### Edit Prompt\n```dart\nvoid editPrompt() async {\n    final response = await openAI.editor.prompt(EditRequest(\n        model: CodeEditModel(),\n        input: 'What day of the wek is it?',\n        instruction: 'Fix the spelling mistakes'));\n\n    print(response.choices.last.text);\n  }\n```\n\n- ### Edit Image\n```dart\n void editImage() async {\n  final response = await openAI.editor.editImage(EditImageRequest(\n          image: FileInfo(\"${image?.path}\", '${image?.name}'),\n          mask: FileInfo('file path', 'file name'),\n          size: ImageSize.size1024,\n          prompt: 'King Snake'),\n          model: DallE3(),);\n\n  print(response.data?.last?.url);\n}\n```\n\n- ### Variations\n```dart\n  void variation() async {\n  final request =\n  Variation(model: DallE2(),image: FileInfo('${image?.path}', '${image?.name}'));\n  final response = await openAI.editor.variation(request);\n\n  print(response.data?.last?.url);\n}\n```\n## Cancel Generate\n\n- ### Stop Generate Prompt\n```dart\n _openAI\n        .onChatCompletionSSE(request: request, onCancel: onCancel);\n\n///CancelData\nCancelData? mCancel;\nvoid onCancel(CancelData cancelData) {\n  mCancel = cancelData;\n}\n\nmCancel?.cancelToken.cancel(\"canceled \");\n```\n\n- ### Stop Edit\n  - image\n  - prompt\n```dart\nopenAI.edit.editImage(request,onCancel: onCancel);\n\n///CancelData\nCancelData? mCancel;\nvoid onCancel(CancelData cancelData) {\n  mCancel = cancelData;\n}\n\nmCancel?.cancelToken.cancel(\"canceled edit image\");\n```\n\n- ### Stop Embedding\n```dart\nopenAI.embed.embedding(request,onCancel: onCancel);\n\n///CancelData\nCancelData? mCancel;\nvoid onCancel(CancelData cancelData) {\n  mCancel = cancelData;\n}\n\nmCancel?.cancelToken.cancel(\"canceled embedding\");\n```\n\n- Stop Audio\n  - translate\n  - transcript\n```dart\nopenAI.audio.transcribes(request,onCancel: onCancel);\n\n///CancelData\nCancelData? mCancel;\nvoid onCancel(CancelData cancelData) {\n  mCancel = cancelData;\n}\n\nmCancel?.cancelToken.cancel(\"canceled audio transcribes\");\n```\n\n- Stop File\n  - upload file\n  - get file\n  - delete file\n```dart\nopenAI.file.uploadFile(request,onCancel: onCancel);\n\n///CancelData\nCancelData? mCancel;\nvoid onCancel(CancelData cancelData) {\n  mCancel = cancelData;\n}\n\nmCancel?.cancelToken.cancel(\"canceled uploadFile\");\n```\n\n## File\n\n- ### Get File\n```dart\nvoid getFile() async {\n  final response = await openAI.file.get();\n  print(response.data);\n}\n```\n\n- ### Upload File\n```dart\nvoid uploadFile() async {\n  final request = UploadFile(file: FileInfo('file-path', 'file-name'),purpose: 'fine-tune');\n  final response = await openAI.file.uploadFile(request);\n  print(response);\n}\n```\n\n- ### Delete File\n```dart\n  void delete() async {\n  final response = await openAI.file.delete(\"file-Id\");\n  print(response);\n}\n```\n\n- ### Retrieve File\n```dart\n  void retrieve() async {\n  final response = await openAI.file.retrieve(\"file-Id\");\n  print(response);\n}\n```\n\n- ### Retrieve Content File\n```dart\n  void retrieveContent() async {\n  final response = await openAI.file.retrieveContent(\"file-Id\");\n  print(response);\n}\n```\n\n## Audio\n\n- ### Audio Translate\n```dart\nvoid audioTranslate() async {\n  final mAudio = File('mp3-path');\n  final request =\n  AudioRequest(file: FileInfo(mAudio.path, 'name'), prompt: '...');\n\n  final response = await openAI.audio.translate(request);\n}\n```\n\n- ### Audio Transcribe\n```dart\nvoid audioTranscribe() async {\n  final mAudio = File('mp3-path');\n  final request =\n  AudioRequest(file: FileInfo(mAudio.path, 'name'), prompt: '...');\n\n  final response = await openAI.audio.transcribes(request);\n}\n```\n\n- ### Create speech\n```dart\n  void createSpeech() async {\n  final request = SpeechRequest(\n          model: 'tts-1', input: 'The quick brown fox jumped over the lazy dog.');\n\n  final List\u003cint\u003e response = await openAI.audio\n          .createSpeech(request: request);\n}\n```\n\n## Embedding\n\n- Embedding\n```dart\nvoid embedding() async {\n  final request = EmbedRequest(\n          model: TextSearchAdaDoc001EmbedModel(),\n          input: 'The food was delicious and the waiter');\n\n  final response = await openAI.embed.embedding(request);\n\n  print(response.data.last.embedding);\n}\n```\n\n## Fine Tune\n\n- ### Create Fine Tune\n```dart\nvoid createTineTune() async {\n  final request = CreateFineTuneJob(trainingFile: 'The ID of an uploaded file');\n  final response = await openAI.fineTune.createFineTuneJob(request);\n}\n```\n\n- ### Fine Tune List\n```dart\n void tineTuneList() async {\n    final response = await openAI.fineTune.listFineTuneJob();\n  }\n```\n\n- ### Fine Tune List Stream\n```dart\n void tineTuneListStream() {\n    openAI.fineTune.listFineTuneJobStream('fineTuneId').listen((it) {\n      ///handled data\n    });\n  }\n```\n\n-  ### Fine Tune Get by Id\n```dart\nvoid tineTuneById() async {\n    final response = await openAI.fineTune.retrieveFineTuneJob('fineTuneId');\n  }\n```\n\n- ### Cancel Fine Tune\n```dart\n  void tineTuneCancel() async {\n    final response = await openAI.fineTune.cancel('fineTuneId');\n  }\n```\n\n- ### Delete Fine Tune\n```dart\n void deleteTineTune() async {\n    final response = await openAI.fineTune.delete('model');\n  }\n```\n\n## Moderations\n\n- ### Create Moderation\n```dart\n  void createModeration() async {\n  final response = await openAI.moderation\n          .create(input: 'input', model: TextLastModerationModel());\n}\n```\n\n## Model\u0026Engine\n\n- Model List\n  - List and describe the various models available in the API. You can refer to the Models documentation to \n  understand what models are available and the differences between them.\n  - https://beta.openai.com/docs/api-reference/models\n\n```dart\nfinal models = await openAI.listModel();\n```\n\n- Engine List\n  - Lists the currently available (non-finetuned) models, and provides basic \n  information about each one such as the owner and availability.\n  - https://beta.openai.com/docs/api-reference/engines\n\n```dart\nfinal engines = await openAI.listEngine();\n```\n\n## Translate App\n\n\u003cimg src=\"https://github.com/redevrx/chat_gpt_sdk/blob/main/assets/example/translate_ui.jpg?raw=true\" width=\"350\" height=\"760\"\u003e\n\n## ChatGPT Demo App\n[![Google Play](https://img.shields.io/badge/Google%20Play-Download-blue?logo=google-play\u0026logoColor=white)](https://play.google.com/store/apps/details?id=com.redevrx.openai.app.openai_app)\n\n\u003cimg src=\"https://github.com/redevrx/chat_gpt_sdk/blob/main/assets/example/Screenshot_1684672351.png?raw=true\" width=\"350\" height=\"760\"\u003e\n\u003cimg src=\"https://github.com/redevrx/chat_gpt_sdk/blob/main/assets/example/Screenshot_1684672512.png?raw=true\" width=\"350\" height=\"760\"\u003e\n\u003cimg src=\"https://github.com/redevrx/chat_gpt_sdk/blob/main/assets/example/Screenshot_1684672715.png?raw=true\" width=\"350\" height=\"760\"\u003e\n\n\n\n## Video Tutorials\n - \u003ca href='https://www.youtube.com/watch?v=qUEUMxGW_0Q\u0026ab_channel=idealBy'\u003eFlutter Chat bot\u003c/a\u003e\n\n - \u003ca href='https://www.youtube.com/watch?v=z25HfnEi2zQ\u0026t=1s\u0026ab_channel=idealBy'\u003eFlutter Generate Image\u003c/a\u003e\n \n\n## Docs (Support Thai)\n \u003cp align=\"center\"\u003e\n \u003ca target=\"_blank\" href=\"https://medium.com/@relalso/flutter-chatgpt-part-1-สอน-2268197247f8\"\u003e\u003cimg src=\"https://github-readme-medium-recent-article.vercel.app/medium/@relalso/2\" alt=\"ChatGPT Part 1\"\u003e\n \u003ca target=\"_blank\" href=\"https://medium.com/@relalso/flutter-chatgpt-part-2-สอน-e2935ad4f963\"\u003e\u003cimg src=\"https://github-readme-medium-recent-article.vercel.app/medium/@relalso/1\" alt=\"ChatGPT Part 2\"\u003e\n \u003ca target=\"_blank\" href=\"https://medium.com/@relalso/flutter-chatgpt-part-2-สอน-e2935ad4f963\"\u003e\u003cimg src=\"https://github-readme-medium-recent-article.vercel.app/medium/@relalso/0\" alt=\"ChatGPT Part 2\"\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredevrx%2Fchat_gpt_sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredevrx%2Fchat_gpt_sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredevrx%2Fchat_gpt_sdk/lists"}