Flutter OpenAI客户端插件openai_client的使用
Flutter OpenAI客户端插件openai_client的使用
ℹ️ Info
openai_client
是一个非官方的、完全用Dart编写的客户端,允许你在Dart或Flutter项目中轻松使用OpenAI API。以下是API实现状态:
APIs | Dart class | Implementation status |
---|---|---|
Models | OpenAIModels |
✅ |
Completions | OpenAICompletions |
✅ |
Chat | OpenAIChat |
✅ |
Edits | OpenAIEdits |
✅ |
Images | OpenAIImages |
✅ |
Embeddings | OpenAIEmbeddings |
✅ |
Files | Not present |
❌ |
Fine-tunes | Not present |
❌ |
Moderations | OpenAIModerations |
✅ |
🧰 Installation
你可以通过在pubspec.yaml
文件中添加依赖来安装这个包:
dependencies:
openai_client: last_version
安装后只需在项目中导入该包即可:
import 'package:openai_client/openai_client.dart';
🚀 Getting Started
要使用API,你需要有一个API密钥。你可以在这里获取一个,并在创建客户端时通过OpenAIConfiguration
构造函数传递它。
// 创建配置
final conf = OpenAIConfiguration(
apiKey: 'Your API key',
organizationId: 'Your organization ID', // 可选
);
// 创建新客户端
final client = OpenAIClient(configuration: conf);
🐛 Debugging
为了测试和调试目的,你可以使用内置的Logger
来更轻松地检查请求和响应的状态。默认情况下,Logger
是禁用的。你可以通过将enableLogging
属性设置为true
来启用它。
// 启用了日志记录功能的客户端实例
final client = OpenAIClient(
...
enableLogging: true,
);
🎯 Examples
下面是一个简单的命令行应用程序示例,允许你测试客户端。你可以在example
文件夹中找到它。
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
import 'package:openai_client/openai_client.dart';
import 'package:openai_client/src/model/openai_chat/chat_message.dart';
Future<void> main() async {
// 加载来自环境变量或文件的应用凭证。
final configuration = await loadConfigurationFromEnvFile();
// 创建一个新客户端。
final client = OpenAIClient(
configuration: configuration,
enableLogging: true,
);
// 获取模型列表。
final models = await client.models.list().data;
// 打印模型列表。
log(models.toString());
// 根据ID获取模型。
final modelId = await client.models.byId(id: 'text-davinci-002').data;
// 打印模型。
log(modelId.toString());
// 创建补全。
final completion = await client.completions
.create(
model: 'text-davinci-002',
prompt: 'Batman was sleeping in his room when suddenly',
)
.data;
// 打印补全结果。
log(completion.toString());
// 创建聊天。
final chat = await client.chat.create(
model: 'gpt-3.5-turbo',
messages: const [
ChatMessage(
role: 'user',
content: 'How do you think is Batman dealing with Robin recently?',
)
],
).data;
// 打印聊天内容。
log(chat.toString());
// 创建编辑。
final edit = await client.edits
.create(
model: 'text-davinci-edit-001',
instruction: 'Fix the spelling mistakes',
input: 'Batmaen and Robin were playing ches in the Batcave',
)
.data;
// 打印编辑结果。
log(edit.toString());
// 创建图片。
final image = await client.images
.create(
prompt: 'Batman is walking down the street with his friends',
n: 2,
)
.data;
// 打印图片信息。
log(image.toString());
// 创建嵌入。
final embedding = await client.embeddings.create(
model: 'text-similarity-babbage-001',
input: ['Batman was talking to Alfred'],
).data;
// 打印嵌入信息。
log(embedding.toString());
final moderation =
await client.moderations.create(input: 'Batman is a bad boy').data;
// 打印审核信息。
log(moderation.toString());
// 关闭客户端并终止HTTP连接。
client.close();
}
/// 从环境变量(`API_KEY`,`ORG_ID`)加载[OpenAIConfiguration]
///
/// 如果变量不存在,则返回`null`。
Future<OpenAIConfiguration> loadConfigurationFromEnvFile() async {
final file = File('.env.json');
final content = await file.readAsString();
final json = jsonDecode(content) as Map<String, dynamic>;
return OpenAIConfiguration(
apiKey: json['API_KEY'] as String,
organizationId: json['ORG_ID'] as String,
);
}
📚 Documentation
项目的完整文档可在这里查看:链接。所有方法都有详细的文档说明,你可以轻松检查可以传递给它们的参数。
🤝 Contributing
如果你想为openai_client
做出贡献,请务必查阅贡献指南。
本项目使用GitHub issues仅用于跟踪请求和错误,请勿将其用于一般问题和讨论。
🪪 License
本项目根据BSD-3-Clause授权许可。此外,它与OpenAI没有任何关联。
更多关于Flutter OpenAI客户端插件openai_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter OpenAI客户端插件openai_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用openai_client
插件的示例代码。这个插件允许你与OpenAI的API进行交互,比如使用GPT或其他模型生成文本。
首先,确保你已经在pubspec.yaml
文件中添加了openai_client
依赖:
dependencies:
flutter:
sdk: flutter
openai_client: ^x.y.z # 替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,我们创建一个简单的Flutter应用,用于向OpenAI的API发送请求并显示响应。
1. 配置OpenAI API密钥
在你的Flutter项目中,你需要在某处存储你的OpenAI API密钥。为了安全起见,最好不要在代码中硬编码密钥。你可以使用环境变量或Flutter的.env
文件(需要额外安装一个包如flutter_dotenv
来处理)。
这里我们假设你已经设置了环境变量OPENAI_API_KEY
。
2. 创建Flutter组件
创建一个新的Flutter组件,例如ChatScreen
,用于发送请求并显示结果。
import 'package:flutter/material.dart';
import 'package:openai_client/openai_client.dart';
import 'package:dotenv/dotenv.dart' show dotenv;
class ChatScreen extends StatefulWidget {
@override
_ChatScreenState createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
final _controller = TextEditingController();
String _response = '';
@override
void initState() {
super.initState();
// 加载环境变量
dotenv.load();
}
void _sendMessage() async {
String apiKey = dotenv.env['OPENAI_API_KEY']!;
OpenAIClient client = OpenAIClient(apiKey: apiKey);
CompletionRequest request = CompletionRequest(
model: 'text-davinci-003', // 你可以根据需要更改模型
prompt: _controller.text,
maxTokens: 150,
temperature: 0.7,
);
try {
CompletionResponse response = await client.createCompletion(request);
setState(() {
_response = response.choices!.first.text!;
});
} catch (e) {
setState(() {
_response = 'Error: ${e.message}';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter OpenAI Client'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextField(
controller: _controller,
maxLines: 10,
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Enter your prompt',
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: _sendMessage,
child: Text('Send Message'),
),
SizedBox(height: 16),
Text(
_response,
style: TextStyle(fontSize: 16),
),
],
),
),
);
}
}
3. 在主应用中使用该组件
最后,在你的主应用文件(例如main.dart
)中,使用这个新的ChatScreen
组件。
import 'package:flutter/material.dart';
import 'chat_screen.dart'; // 确保路径正确
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter OpenAI Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ChatScreen(),
);
}
}
4. 运行应用
确保你的环境变量已经正确设置(例如,在.env
文件中),然后运行你的Flutter应用。你应该能够看到一个简单的界面,允许你输入文本并通过OpenAI的API生成响应。
注意事项
- 确保你的API密钥安全,不要将其硬编码在代码中。
- 根据你的需求调整请求参数,如模型、最大令牌数等。
- 捕获并处理可能的错误,如网络问题或API限制。
这个示例代码提供了一个基本的框架,你可以根据需要进一步扩展和自定义。