Flutter ChatGPT客户端插件chatgpt_client的使用
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
更多关于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),
],
),
),
);
}
}