Flutter OpenAI接口集成插件dart_openai的使用
Flutter OpenAI接口集成插件dart_openai的使用
简介
dart_openai
是一个开源的客户端包,它允许开发者轻松地将OpenAI强大的AI模型集成到他们的Dart/Flutter应用程序中。这个库提供了简单直观的方法来请求OpenAI的各种API,包括GPT-3语言模型、DALL-E图像生成等。该包设计轻量且易于使用,使您可以专注于构建应用程序,而不是处理HTTP请求的复杂性和错误。
安装和配置
添加依赖
在 pubspec.yaml
文件中添加 dart_openai
作为依赖:
dependencies:
dart_openai: ^latest_version # 替换为最新版本号
加载API密钥
我们建议从 .env
文件中加载您的API密钥以确保安全性。可以使用 envied
包来实现这一点:
// .env
OPEN_AI_API_KEY=<REPLACE WITH YOUR API KEY>
// lib/env/env.dart
import 'package:envied/envied.dart';
part 'env.g.dart';
@Envied(path: ".env")
abstract class Env {
@EnviedField(varName: 'OPEN_AI_API_KEY') // the .env variable.
static const apiKey = _Env.apiKey;
}
// lib/main.dart
void main() {
OpenAI.apiKey = Env.apiKey; // 初始化包并设置API密钥
}
使用示例
创建文本补全
以下是如何创建基于给定提示的文本补全:
Future<void> main() async {
// 设置OpenAI API密钥
OpenAI.apiKey = Env.apiKey;
// 创建文本补全
final completion = await OpenAI.instance.completion.create(
model: "text-davinci-003",
prompt: "Dart is",
);
// 打印输出结果
print(completion.choices.first.text);
}
生成图片
根据提供的提示生成图片:
final image = await OpenAI.instance.image.create(
prompt: "an astronaut on the sea",
n: 1,
size: OpenAIImageSize.size1024,
responseFormat: OpenAIImageResponseFormat.url,
);
for (var item in image.data) {
print(item.url);
}
内容审核
检查输入内容是否违反OpenAI的内容政策:
final moderation = await OpenAI.instance.moderation.create(
input: "I will cut your head off",
);
print(moderation.results.first.categories.violence);
进阶功能
聊天(ChatGPT)
创建聊天对话完成:
final userMessage = OpenAIChatCompletionChoiceMessageModel(
content: [
OpenAIChatCompletionChoiceMessageContentItemModel.text(
"Hello my friend!",
),
],
role: OpenAIChatMessageRole.user,
);
final chatStream = OpenAI.instance.chat.createStream(
model: "gpt-3.5-turbo",
messages: [userMessage],
seed: 423,
n: 2,
);
chatStream.listen((event) {
final content = event.choices.first.delta.content;
print(content);
}, onDone: () {
print("Done");
});
细调(Fine-Tuning)
创建一个新的细调任务:
final fineTune = await OpenAI.instance.fineTune.create(
trainingFile: "FILE_ID",
);
print(fineTune.status);
错误处理
任何来自OpenAI API端的错误都会抛出 RequestFailedException
异常,可以在代码中捕获并处理这些异常:
try {
final errorVariation = await OpenAI.instance.image.variation(
image: File(/*PATH OF NON-IMAGE FILE*/),
);
} on RequestFailedException catch(e) {
print(e.message);
print(e.statusCode);
}
结语
dart_openai
提供了丰富的功能和良好的文档支持,能够帮助您快速上手并充分利用OpenAI的强大能力。如果您有任何问题或需要进一步的帮助,请参考官方文档或参与社区讨论。
更多关于Flutter OpenAI接口集成插件dart_openai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter OpenAI接口集成插件dart_openai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用dart_openai
插件来集成OpenAI接口的示例代码。这个插件可以让你在Flutter应用中方便地调用OpenAI的API,比如GPT或其他模型。
首先,确保你的Flutter项目已经创建,并且你已经在pubspec.yaml
文件中添加了dart_openai
依赖:
dependencies:
flutter:
sdk: flutter
dart_openai: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你需要配置OpenAI的API密钥。通常,你会在你的环境变量或配置文件中存储这个密钥。为了演示目的,这里直接在代码中硬编码(不推荐在生产环境中这样做):
import 'package:flutter/material.dart';
import 'package:dart_openai/dart_openai.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: OpenAIExample(),
);
}
}
class OpenAIExample extends StatefulWidget {
@override
_OpenAIExampleState createState() => _OpenAIExampleState();
}
class _OpenAIExampleState extends State<OpenAIExample> {
final OpenAI openAI = OpenAI(apiKey: '你的OpenAI API密钥'); // 请替换为你的实际API密钥
String responseText = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter OpenAI接口集成'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
try {
var completion = await openAI.createCompletion(
prompt: '写一个关于Flutter的简单介绍。',
model: 'text-davinci-003', // 你可以根据需要选择不同的模型
maxTokens: 150,
temperature: 0.7,
);
setState(() {
responseText = completion.choices.first.text;
});
} catch (e) {
setState(() {
responseText = 'Error: ${e.message}';
});
}
},
child: Text('生成文本'),
),
SizedBox(height: 20),
Text(
responseText,
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 引入了
dart_openai
包。 - 创建了一个
OpenAI
实例,并传入了你的API密钥。 - 使用
OpenAI
实例的createCompletion
方法来生成文本。我们指定了prompt
(提示词),model
(使用的模型),maxTokens
(生成的最大令牌数),以及temperature
(控制生成文本的随机性)。 - 使用
ElevatedButton
来触发文本生成,并将结果显示在界面上。
请注意,这个示例中的API密钥是直接硬编码的,这在实际应用中是不安全的。你应该使用环境变量或安全的密钥管理服务来管理你的API密钥。
此外,dart_openai
包可能会根据OpenAI的API变化而更新,所以请确保查阅最新的文档和示例代码。