Flutter OpenAI接口简化插件open_ai_simplified的使用
Flutter OpenAI接口简化插件open_ai_simplified的使用
简介
OpenAI简化插件是一个旨在为开发者提供简单直观访问OpenAI服务的应用。通过它,开发者可以以简单高效的方式将一些OpenAI的人工智能技术集成到自己的应用程序中。
状态:开发中 👷🏿 ⚠️ OpenAI提供的某些工具仍在开发中,并将在未来逐步实现。
安装
要安装OpenAI简化插件,您可以使用以下任一方法:
方法 1: flutter pub add
flutter pub add open_ai_simplified
方法 2: pubspec.yaml
或者,您可以在pubspec.yaml文件中添加以下行:
dependencies:
open_ai_simplified: ^VERSION
替换 VERSION 为您想要的最新版本。 在您的文件顶部导入库:
import 'package:open_ai_simplified/open_ai_simplified.dart';
特性
以下是可用的一些功能:
功能 | 可用性 |
---|---|
模型 | ✅ |
补全 | ✅ |
编辑 | ✅ |
图像 | ✅ |
嵌入 | ✅ |
文件 | ✅ |
微调 | ✅ |
审查 | ✅ |
开始使用
OpenAI简化插件旨在使使用其功能更加容易,因此几乎不需要配置即可使用。只需初始化其仓库并提供您的OpenAI API密钥,所有功能都将使用API建议的默认配置。如有必要,也可以更改设置。
要配置所需功能的参数,有几种方法可供选择,一种是使用包中的对象之一,另一种是传递一个包含OpenAI API提供的数据结构的Map。
使用示例
以下是一个完整的示例,展示了如何使用open_ai_simplified
插件进行各种操作。
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:open_ai_simplified/open_ai_simplified.dart';
void main() async {
// 加载环境变量
await dotenv.load(fileName: ".env");
// 创建一个新的仓库
OpenIARepository openAi = OpenIARepository();
// 添加API密钥
openAi.addApiKey(dotenv.env['API_KEY']!);
// 获取可用的模型列表
final models = await openAi.getRawModelsList();
// 打印模型
log(models.toString());
// 配置补全参数,也可以使用configCompletionFromMap方法
openAi.configCompletionFromConfig(ConfigCompletion(temperature: 0.6));
// 创建一个补全请求
final completion = await openAi.getCompletion('what times it?');
// 打印补全结果
log(completion.choices[0].text);
// 配置编辑参数,也可以使用configEditsFromMap方法
openAi.configEditsFromConfig(config: ConfigEdits(temperature: 0.8));
// 创建编辑请求
final edit = await openAi.getEdits(
input: 'helo piple', instruction: 'fix the spelling mistakes');
// 打印编辑结果
log(edit.choices[0].text);
// 配置图像参数,也可以使用configImagesFromMap方法
// 生成图像的大小。必须是256x256、512x512或1024x1024
openAi.configImagesFromConfig(ConfigImages(n: 1, size: '256x256'));
// 创建图像
final images = await openAi.getImages('horse with golden hair and dragons');
// 打印图像URL
images.data.forEach((element) {
log(element.url);
});
// 创建图像变体,图像应为PNG文件,小于4MB且为正方形
final imageVariation = await openAi.createAImageVariation(
imageFile: await downloadFile(images.data[0].url),
);
log(imageVariation.data[0].url);
// 编辑图像,你也可以传递另一个图像作为蒙版
final editImage = await openAi.editImage(
image: await downloadFile(images.data[0].url),
prompt: 'give a new hair style to the horse');
// 打印编辑后的图像URL
log(editImage.data[0].url);
/// 创建嵌入
final embedding = await openAi.createEmbedding(prompt: 'sabado a noite');
/// 打印嵌入
log(embedding.data[0].embedding.toString());
/// 获取文件列表
final list = await openAi.getFilesList();
/// 打印文件列表
log(list.data.toString());
/// 上传文件,该文件包含用于跨各种端点/功能的文档
/// 目前,组织上传的所有文件大小不得超过1GB
final uploadedFile = await openAi.uploadFile(
file: File('director/xxx.jsonl'), purpose: 'fine-tune');
/// 打印上传的文件信息
log(uploadedFile.toString());
/// 删除文件并返回有关已删除文件的信息
final deletedFile = await openAi.deleteFile(fileId: 'fileId');
/// 打印有关已删除文件的信息
log(deletedFile.toString());
/// 获取有关文件的信息作为FileData对象
/// 你也可以使用retriveRawFileInfo方法以Map形式获取信息
final fileInfo = await openAi.retriveFileInfo(fileId: 'fileId');
/// 打印文件信息
log(fileInfo.toString());
/// 获取特定文件的内容
final fileContent = await openAi.retriveFileContent(fileId: 'fileId');
/// 打印文件内容
log(fileContent.toString());
/// 判断文本是否违反OpenAI的内容政策,返回ModerationResponse对象
final moderationInfo =
await openAi.moderationCheck(input: 'I want to kill them.');
/// 打印审查信息
log(moderationInfo.results[0].categories.toString());
/// 创建一个作业,从给定的数据集中微调指定的模型,返回FineTunesResponse对象
final fineTunesCreated =
await openAi.createFineTunes(trainingFile: 'ID of an uploaded file');
/// 打印创建的微调信息
log(fineTunesCreated.toString());
/// 列出组织的微调作业,返回ListFineTunesResponse对象
final listFineTunes = await openAi.getListFineTunes();
/// 打印微调列表信息
log(listFineTunes.data[0].toString());
/// 获取有关微调作业的信息,返回FineTunesResponse对象
final retrivedFileTune =
await openAi.retriveFineTune(fineTuneId: 'ID of an uploaded file');
/// 打印微调信息
log(retrivedFileTune.toString());
/// 立即取消微调作业,返回FineTunesResponse对象
final canceledFineTune =
await openAi.cancelFineTune(fineTuneId: 'fineTuneId');
/// 打印取消的微调信息
log(canceledFineTune.toString());
/// 删除微调模型,你必须在组织中具有Owner角色,返回Map
final deletedFineTune = await openAi.deleteFineTunelModel(model: 'model');
/// 打印删除的微调信息
log(deletedFineTune.toString());
}
Future<File> downloadFile(String url) async {
Dio simple = Dio();
String savePath = '${Directory.systemTemp.path}/${url.split('/').last}';
await simple.download(url, savePath,
options: Options(responseType: ResponseType.bytes));
File file = File(savePath);
return file;
}
更多关于Flutter OpenAI接口简化插件open_ai_simplified的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter OpenAI接口简化插件open_ai_simplified的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用open_ai_simplified
插件与OpenAI API进行交互的代码示例。这个插件简化了与OpenAI API的集成,使得调用变得更加直观。
首先,确保你已经在pubspec.yaml
文件中添加了open_ai_simplified
依赖:
dependencies:
flutter:
sdk: flutter
open_ai_simplified: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,我们编写Flutter代码来演示如何使用这个插件。
1. 配置OpenAI API密钥
在使用插件之前,你需要在OpenAI平台上获取一个API密钥,并将其配置在Flutter应用中。这通常可以通过环境变量或者硬编码的方式(不推荐在生产环境中硬编码密钥)。
import 'package:open_ai_simplified/open_ai_simplified.dart';
void main() {
// 配置OpenAI API密钥
OpenAi.apiKey = '你的OpenAI API密钥';
runApp(MyApp());
}
2. 调用OpenAI API
下面是一个完整的示例,演示如何使用open_ai_simplified
插件来完成文本生成任务(例如,使用GPT-3模型)。
import 'package:flutter/material.dart';
import 'package:open_ai_simplified/open_ai_simplified.dart';
void main() {
OpenAi.apiKey = '你的OpenAI API密钥';
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('OpenAI Simplified Example'),
),
body: Center(
child: GenerateTextButton(),
),
),
);
}
}
class GenerateTextButton extends StatefulWidget {
@override
_GenerateTextButtonState createState() => _GenerateTextButtonState();
}
class _GenerateTextButtonState extends State<GenerateTextButton> {
String responseText = '';
void generateText() async {
try {
// 配置请求参数
var params = CreateCompletionRequest(
prompt: '请写一个关于Flutter的简短介绍。',
maxTokens: 150,
temperature: 0.7,
);
// 调用OpenAI API
var response = await OpenAi.createCompletion(params);
// 更新UI
setState(() {
responseText = response.choices!.first.text!;
});
} catch (e) {
print('Error: $e');
setState(() {
responseText = 'Error fetching response.';
});
}
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextButton(
onPressed: generateText,
child: Text('Generate Text'),
),
Text(
responseText,
style: TextStyle(fontSize: 18),
maxLines: 10,
overflow: TextOverflow.ellipsis,
),
],
);
}
}
3. 运行应用
现在,你可以运行你的Flutter应用,点击“Generate Text”按钮,应该会看到由OpenAI API生成的关于Flutter的简短介绍。
注意事项
- API配额和费用:请注意,OpenAI API的使用可能会产生费用,并且每个API密钥都有配额限制。
- 安全性:不要在客户端代码中硬编码API密钥。最好使用安全存储(如Firebase、环境变量等)来管理密钥。
- 错误处理:示例代码中的错误处理非常基础。在实际应用中,你可能需要更详细的错误处理和用户反馈。
希望这个示例能帮你更好地理解如何在Flutter项目中使用open_ai_simplified
插件与OpenAI API进行交互。