Flutter ChatGPT客户端插件chatgpt_client的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter ChatGPT 客户端插件 chatgpt_client 的使用

ChatGPT Client

使用 Dart 语言访问 OpenAI ChatGPT 官方 API。支持任何 Dart 项目以及所有 Flutter 目标平台(iOS、Android、Windows、Linux、Web)。

特性

  • 使用 OpenAI ChatGPT 官方 Completions API 端点。
  • 在客户端维护聊天历史列表(约 4000 个标记),以便新提示了解之前的聊天上下文。
  • 支持任何自定义模型作为参数(如 GPT-3.5、GPT-4 等)。
  • 支持使用原生 Dart 流式处理 HTTP 响应。
  • 支持标准 HTTP 响应。
  • 可传递自定义系统提示和温度。

开始使用

注册 API 密钥

OpenAI 注册 API 密钥。


安装

此包托管在 Pub Dev Library 上。

Flutter 应用

flutter pub add chagpt_client

Dart 应用

dart pub add chagpt_client

使用方法

初始化

使用 API 密钥进行初始化。默认模型为 gpt-3.5-turbo

import 'package:chatgpt_client/chatgpt_client.dart';

const client = ChatGPTClient(apiKey: "API_KEY");

可选地,您可以提供系统提示、温度和模型:

const client = ChatGPTClient(
  apiKey: "API_KEY",
  model: "gpt-4",
  systemPrompt: "You are a CS Professor",
  temperature: 0.7,
);

有两种 API:流式和普通。


流式响应

服务器将分块发送数据,直到流完成或抛出错误。

try {
  var text = "";
  final stream = client.sendMessageStream(prompt);
  await for (final textChunk in stream) {
    text += textChunk;
    print(textChunk); // 打印每一块数据
  }
  print(text); // 打印最终结果
} catch (exception) {
  print(exception.toString()); // 打印异常信息
}

普通响应

标准的 HTTP 请求和响应生命周期。服务器会发送完整的文本(响应时间较长)。

try {
  final text = await client.sendMessage(prompt);
  print(text); // 打印最终结果
} catch (exception) {
  print(exception.toString()); // 打印异常信息
} 

聊天历史列表

客户端存储了对话的历史记录列表,这些记录将在新提示中包含,使 ChatGPT 了解之前的对话上下文。当发送新提示时,客户端会确保令牌不超过 4000(按 1 个令牌 = 4 个字符计算),如果超过,则截断一些之前的对话。

您可以通过以下方式清除历史记录列表:

client.clearHistoryList();

示例代码

以下是完整的示例代码,展示了如何使用 chatgpt_client 插件。

示例代码

import 'package:chatgpt_client/chatgpt_client.dart';

void main() async {
  // 初始化客户端
  final client = ChatGPTClient(apiKey: "API_KEY");
  final prompt = "what is observable object?";

  /// 标准响应
  print("Standard Response");
  try {
    final text = await client.sendMessage(prompt);
    print(text); // 打印 ChatGPT 返回的结果
  } catch (exception) {
    print(exception.toString()); // 打印异常信息
  }

  /// 流式响应
  print("Stream Response");
  try {
    var text = "";
    final stream = client.sendMessageStream(prompt);
    await for (final textChunk in stream) {
      text += textChunk;
      print(textChunk); // 打印每一块数据
    }
    print(text); // 打印最终结果
  } catch (exception) {
    print(exception.toString()); // 打印异常信息
  }

  // 清除历史记录
  client.clearHistoryList();
}

更多关于Flutter ChatGPT客户端插件chatgpt_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter ChatGPT客户端插件chatgpt_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


chatgpt_client 是一个用于在 Flutter 应用中集成 ChatGPT 功能的插件。通过这个插件,你可以轻松地与 OpenAI 的 ChatGPT 模型进行交互,实现聊天、问答等功能。以下是如何在 Flutter 项目中使用 chatgpt_client 的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 chatgpt_client 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  chatgpt_client: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在需要使用 chatgpt_client 的 Dart 文件中导入插件。

import 'package:chatgpt_client/chatgpt_client.dart';

3. 初始化 ChatGPT 客户端

在使用 ChatGPT 客户端之前,你需要初始化它。通常,你需要提供一个 OpenAI 的 API 密钥。

final client = ChatGPTClient(apiKey: 'your-openai-api-key');

4. 发送消息并获取响应

你可以通过 sendMessage 方法向 ChatGPT 发送消息,并获取响应。

void sendMessage() async {
  final response = await client.sendMessage("Hello, how are you?");
  print(response);  // 输出 ChatGPT 的响应
}

5. 处理响应

sendMessage 方法返回的是一个 ChatGPTResponse 对象,你可以从中提取出 ChatGPT 的回复内容。

void sendMessage() async {
  final response = await client.sendMessage("Hello, how are you?");
  if (response != null) {
    print(response.choices[0].message.content);  // 输出 ChatGPT 的回复
  } else {
    print("Failed to get response from ChatGPT.");
  }
}

6. 完整示例

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 chatgpt_client 插件。

import 'package:flutter/material.dart';
import 'package:chatgpt_client/chatgpt_client.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter ChatGPT Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ChatScreen(),
    );
  }
}

class ChatScreen extends StatefulWidget {
  [@override](/user/override)
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final TextEditingController _controller = TextEditingController();
  final ChatGPTClient client = ChatGPTClient(apiKey: 'your-openai-api-key');
  String _response = '';

  void _sendMessage() async {
    final message = _controller.text;
    final response = await client.sendMessage(message);
    if (response != null) {
      setState(() {
        _response = response.choices[0].message.content;
      });
    } else {
      setState(() {
        _response = "Failed to get response from ChatGPT.";
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat with ChatGPT'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _controller,
              decoration: InputDecoration(
                labelText: 'Enter your message',
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _sendMessage,
              child: Text('Send'),
            ),
            SizedBox(height: 20),
            Text('Response:'),
            Text(_response),
          ],
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!