Flutter OpenAI助手插件assistant_openai的使用
Flutter OpenAI助手插件assistant_openai的使用
通过OpenAI的助手API为您的Flutter应用赋能,该API旨在帮助开发者构建能够执行多种任务的强大AI助手。(非官方插件)
如何使用助手(Beta)
助手API旨在帮助开发者构建能够执行多种任务的强大AI助手。
注意: 助手API目前处于Beta阶段,我们正在积极添加更多功能。如果您有任何反馈,请在我们的开发者论坛中分享。
助手的主要功能:
- 助手可以根据特定指令调用OpenAI的模型,以调整其个性和能力。
- 助手可以并行访问多种工具,包括OpenAI托管的工具(例如代码解释器和知识检索)以及您通过函数调用构建/托管的工具。
- 助手可以利用持久线程简化AI应用程序开发。线程存储消息历史记录,并在对话变得过长时截断它,以适应模型的上下文长度。创建一个线程后,用户回复时可以追加消息。
- 助手可以在各种格式的文件中工作,作为其创建的一部分或作为助手与用户之间的线程的一部分。使用工具时,助手可以创建文件(例如图像、电子表格等),并在他们创建的消息中引用这些文件。
安装
在pubspec.yaml
文件中添加以下依赖项:
dependencies:
assistant_openai: ^1.0.1
初始化
在项目中导入并使用:
import 'package:assistant_openai/openaiassistant.dart';
var client = OpenAIAssistant(apiKey: 'YOUR_OPENAI_API_KEY', organizationID: 'YOUR_ORGANIZATION_ID');
创建助手
/// 创建一个新的助手对象
var newAssistant = NewAssistantModel(
name: "ASSISTANT_NAME",
description: "My Math assistant", // 描述助手
instructions: "You are a math tutor", // 指令
model: "gpt-4", // 使用的模型
tools: [
Tool(type: "retrieval") // 工具类型
],
fileIds: ['fieldID'], // 文件ID
);
/// 使用客户端创建助手
var assistant = await client.assistant.create(newAssistant);
/// 输出助手的详细信息
print(assistant!.name);
print(assistant.model);
print(assistant.instructions);
print(assistant.tools);
print(assistant.fileIds);
print(assistant.description);
print(assistant.metadata);
获取助手
/// 使用客户端获取助手
var retrievedAssistant = await client.assistant.retrieve('PARSE_ASSISTANT_ID_HERE');
/// 输出助手的详细信息
print(retrievedAssistant!.name);
print(retrievedAssistant.model);
print(retrievedAssistant.instructions);
print(retrievedAssistant.tools);
print(retrievedAssistant.fileIds);
print(retrievedAssistant.description);
print(retrievedAssistant.metadata);
修改助手
/// 使用客户端修改助手
var assistantDetails = AssistantModel(
id: "ASSISTANT_ID",
name: "ASSISTANT_NAME",
description: "My Math assistant",
instructions: "You are a math tutor",
model: "gpt-4",
object: "assistant",
fileIds: ['fieldID'],
createdAt: INT,
tools: [],
metadata: Map<dynamic, dynamic>,
);
var assistant = await client.assistant.modify(assistantDetails);
/// 输出助手的详细信息
print(assistant!.name);
print(assistant.model);
print(assistant.instructions);
print(assistant.tools);
print(assistant.fileIds);
print(assistant.description);
print(assistant.metadata);
更多关于Flutter OpenAI助手插件assistant_openai的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter OpenAI助手插件assistant_openai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用assistant_openai
插件的示例代码。这个插件允许你与OpenAI的API进行交互,例如使用GPT-3或其他OpenAI模型来生成文本。
首先,确保你已经在pubspec.yaml
文件中添加了assistant_openai
依赖:
dependencies:
flutter:
sdk: flutter
assistant_openai: ^latest_version # 请替换为最新的版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用assistant_openai
插件:
- 配置OpenAI API密钥:
确保你有OpenAI的API密钥,并将其存储在一个安全的地方。在这个示例中,我们假设你已经将API密钥存储在一个环境变量中。
- 创建OpenAI客户端:
import 'package:assistant_openai/assistant_openai.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('OpenAI Assistant Example'),
),
body: Center(
child: OpenAIAssistantExample(),
),
),
);
}
}
class OpenAIAssistantExample extends StatefulWidget {
@override
_OpenAIAssistantExampleState createState() => _OpenAIAssistantExampleState();
}
class _OpenAIAssistantExampleState extends State<OpenAIAssistantExample> {
late OpenAIAssistant openAIAssistant;
String? responseText;
@override
void initState() {
super.initState();
// 从环境变量中获取API密钥(这里假设你已经在.env文件中配置了API_KEY)
String apiKey = DotEnv().env['API_KEY'] ?? '';
openAIAssistant = OpenAIAssistant(apiKey: apiKey);
}
void fetchResponse() async {
try {
Map<String, dynamic> requestBody = {
'model': 'text-davinci-003', // 使用GPT-3模型
'prompt': 'Hello, how are you?',
'max_tokens': 150,
'temperature': 0.7,
};
var response = await openAIAssistant.createCompletion(requestBody);
if (response.statusCode == 200) {
var responseBody = jsonDecode(response.body);
setState(() {
responseText = responseBody['choices'][0]['text'];
});
} else {
setState(() {
responseText = 'Error: ${response.statusCode}';
});
}
} catch (e) {
setState(() {
responseText = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: fetchResponse,
child: Text('Ask OpenAI'),
),
if (responseText != null)
Padding(
padding: const EdgeInsets.all(16.0),
child: Text(
responseText!,
style: TextStyle(fontSize: 18),
),
),
],
);
}
}
注意:
- 上述代码中使用了
dotenv
包来管理环境变量。你需要在pubspec.yaml
中添加dotenv
依赖,并在项目根目录下创建一个.env
文件来存储你的API密钥。 - 你需要确保你的
.env
文件被正确加载。这通常涉及到在main.dart
文件的顶部添加一些代码来加载环境变量。
- 加载环境变量(在
main.dart
文件的顶部添加):
import 'package:dotenv/dotenv.dart' show loadDotenv;
void main() async {
await loadDotenv(); // 加载.env文件
runApp(MyApp());
}
- 创建
.env
文件(在项目根目录下):
API_KEY=your_openai_api_key_here
请替换your_openai_api_key_here
为你的实际OpenAI API密钥。
这样,你就可以在Flutter应用中与OpenAI的API进行交互了。点击按钮后,应用将向OpenAI发送请求,并在界面上显示生成的文本。