带 Flutter 的 ChatGPT 应用

ChatGPT 是 OpenAI 于 2022 年 11 月推出的聊天机器人。它建立在 OpenAI 的 GPT-3.5 系列大型语言模型之上,并通过监督和强化学习技术进行了微调。

安装包

chat_gpt:1.0.1+2
pub get

示例

创建 ChatGPT 实例

  • 参数
    • 令牌
      • 您的秘密 API 密钥列于下方。请注意,生成密钥后,我们不会再次显示您的秘密 API 密钥。
      • 请勿与他人共享您的 API 密钥,或将其暴露在浏览器或其他客户端代码中。为了保护您的账户安全,OpenAI 可能会自动轮换任何被我们发现已公开泄露的 API 密钥。
      • https://beta.openai.com/account/api-keys
  • 组织 ID
final openAI = ChatGPT.instance.builder("token");
  • 文本补全 API
    • 翻译方法
      • translateEngToThai
      • translateThaiToEng
      • translateToJapanese
    • 模型
      • kTranslateModelV3
      • kTranslateModelV2
      • kCodeTranslateModelV2
        • 将自然语言翻译成 SQL 查询。
        • 使用自然语言为 Stripe API 创建代码。
        • 查找函数的时序复杂度。
    • https://beta.openai.com/examples

final request = CompleteReq(prompt: translateEngToThai(word: ''),
                model: kTranslateModelV3, max_tokens: 200);

 openAI.onCompleteStream(request:request).listen((response) => print(response));
  • 示例问答
    • 根据现有知识回答问题。

final request = CompleteReq(prompt:'What is human life expectancy in the United States?'),
                model: kTranslateModelV3, max_tokens: 200);

 openAI.onCompleteStream(request:request).listen((response) => print(response));
  • 请求
Q: What is human life expectancy in the United States?
  • 响应
A: Human life expectancy in the United States is 78 years.
  • 模型列表
    • 列出 API 中当前可用的模型,并提供有关每个模型的基本信息,例如所有者和可用性。您可以参考模型文档来了解哪些模型可用以及它们之间的区别。
    • https://beta.openai.com/docs/api-reference/models
final models = await openAI.listModel();
final engines = await openAI.listEngine();

Flutter 示例

class _TranslateScreenState extends State<TranslateScreen> {
  /// text controller
  final _txtWord = TextEditingController();

  CompleteRes? _response;
  StreamSubscription? subscription;

  final api = ChatGPT.instance;

  void _translateEngToThai() {
    final request = CompleteReq(
        prompt: translateEngToThai(word: _txtWord.text.toString()),
        model: kTranslateModelV3,
        max_tokens: 1000);
    subscription = ChatGPT.instance
        .builder("token")
        .onCompleteStream(request: request)
        .listen((res) {
      setState(() {
        _response = res;
      });
    });
  }

  void modelDataList() async{
    final model = await ChatGPT.instance
        .builder("token")
        .listModel();

  }

  void engineList() async{
    final engines = await ChatGPT.instance
        .builder("token")
        .listEngine();
  }

  @override
  void dispose() {
    subscription?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    var size = MediaQuery.of(context).size;
    return Scaffold(
      backgroundColor: Colors.white,
      body: SingleChildScrollView(
        child: Center(
          child: Padding(
            padding: const EdgeInsets.symmetric(vertical: 16.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                /**
                 * title translate
                 */
                _titleCard(size),
                /**
                 * input card
                 * insert your text for translate to th.com
                 */
                _inputCard(size),

                /**
                 * card input translate
                 */
                _resultCard(size),
                /**
                 * button translate
                 */
                _btnTranslate()
              ],
            ),
          ),
        ),
      ),
      bottomNavigationBar: _navigation(size),
    );
  }
}

GitHub

查看 Github