Flutter OpenAI接口集成插件sitesurface_flutter_openai的使用
Flutter OpenAI接口集成插件sitesurface_flutter_openai的使用
Sitesurface Flutter OpenAI
适用于Flutter的OpenAI API客户端
此Flutter包允许您轻松地将OpenAI的API服务集成到您的Flutter应用程序中。通过此包,您可以向OpenAI的语言模型发起请求,检索完成和摘要等。
如果您觉得此包有用,请点赞👍并与其他开发人员分享。
需求 #
Dart >=2.18.6
和 Flutter >=1.17.0
开始使用 #
使用Sitesurface Flutter OpenAI包,您可以通过OpenAIClient
对象与OpenAI API进行交互。
为了使用API,您需要一个API密钥。您可以在这里获取一个,一旦获取到它,您就可以在OpenAIConfig
构造函数中传递该密钥。
final _openAiClient = OpenAIClient(OpenAIConfig(
apiKey: "---your API key here---",
organizationId: "---your Organization Id here---"));
- 完成。给定一个提示,模型会返回一个或多个预测的完成,并且还可以返回每个位置的替代标记的概率。您可以在此处了解更多信息这里。 您可以访问以下方式的完成方法:
_openAiClient.completions.createCompletion(request);
聊天机器人 #
您可以使用ChatGPTBuilder
来构建您的聊天机器人。这里的messages
包含用户和ChatGPT的消息。您可以使用onSend
发送文本消息。
return ChatGPTBuilder(
completionRequest: _completionRequest,
openAIClient: _openAiClient,
builder: (context, messages, onSend) {
return MyMessageWidget();
},
);
您也可以传递一个CreateCompletionRequest
来自定义请求。
final _completionRequest =
CreateCompletionRequest(model: "text-davinci-003", maxTokens: 2048);
return ChatGPTBuilder(
completionRequest: _completionRequest,
openAIClient: _openAiClient,
builder: (context, messages, onSend) {
return MyMessageWidget();
},
);
问题和反馈 #
请在我们的问题跟踪器中提交Sitesurface Flutter OpenAI特定的问题、错误或功能请求。
不是特定于Sitesurface Flutter Chat的插件问题可以提交到Flutter问题跟踪器。
贡献 #
欢迎您为本项目做出贡献。
如果您发现了一个错误或希望实现一个功能,但不知道如何修复/实现,请在此处提交一个问题。 如果您修复了一个错误或实现了某个功能,请发送一个拉取请求。
示例代码
import 'package:chat_bubbles/chat_bubbles.dart';
import 'package:flutter/material.dart';
import 'package:sitesurface_flutter_openai/sitesurface_flutter_openai.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 此小部件是您的应用的根节点。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
themeMode: ThemeMode.dark,
darkTheme: ThemeData.dark(),
home: const MyHomePage(),
debugShowCheckedModeBanner: false,
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _openAiClient = OpenAIClient(OpenAIConfig(
apiKey: "---your-api-key-here---",
organizationId: "---your-organization-id-here---"));
final _textEditingController = TextEditingController();
final _scrollController = ScrollController();
final _completionRequest =
CreateCompletionRequest(model: "text-davinci-003", maxTokens: 2048);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("ChatGPT")),
body: ChatGPTBuilder(
completionRequest: _completionRequest,
openAIClient: _openAiClient,
builder: (context, messages, onSend) {
return Column(
children: [
const SizedBox(
height: 10,
),
Expanded(
child: ListView.separated(
itemCount: messages.length,
controller: _scrollController,
separatorBuilder: (context, index) => const SizedBox(
height: 5,
),
itemBuilder: (context, index) {
var isSender = !messages[index].fromChatGPT;
return BubbleSpecialThree(
isSender: isSender,
text: messages[index].message,
color:
isSender ? const Color(0xFF1B97F3) : Colors.white,
tail: true,
textStyle: TextStyle(
color: isSender ? Colors.white : Colors.grey[800],
fontSize: 16),
);
}),
),
Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.all(10.0),
child: TextField(
controller: _textEditingController,
decoration: InputDecoration(
hintText: "Message",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(20))),
),
),
),
FloatingActionButton(
onPressed: () {
if (_textEditingController.text.trim().isEmpty) return;
onSend(_textEditingController.text).whenComplete(() {
_scrollController.jumpTo(
_scrollController.position.maxScrollExtent);
});
FocusScope.of(context).unfocus();
_textEditingController.clear();
},
child: const Icon(Icons.send)),
const SizedBox(
width: 10,
),
],
),
],
);
},
),
);
}
}
更多关于Flutter OpenAI接口集成插件sitesurface_flutter_openai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter OpenAI接口集成插件sitesurface_flutter_openai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成并使用sitesurface_flutter_openai
插件来调用OpenAI API的示例代码。这个插件允许你通过Flutter应用与OpenAI的API进行交互。
1. 添加依赖
首先,你需要在你的pubspec.yaml
文件中添加sitesurface_flutter_openai
依赖:
dependencies:
flutter:
sdk: flutter
sitesurface_flutter_openai: ^最新版本号 # 请替换为插件的实际最新版本号
2. 安装依赖
在命令行中运行以下命令来安装依赖:
flutter pub get
3. 配置OpenAI API密钥
确保你已经从OpenAI官网获取了API密钥,并将其配置在你的Flutter应用中。你可以使用环境变量或者将密钥硬编码在配置文件中(注意:硬编码不是最佳实践,建议使用环境变量或安全的密钥管理服务)。
4. 编写代码
下面是一个简单的Flutter应用示例,展示了如何使用sitesurface_flutter_openai
插件来调用OpenAI的API。
import 'package:flutter/material.dart';
import 'package:sitesurface_flutter_openai/sitesurface_flutter_openai.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter OpenAI Integration'),
),
body: Center(
child: OpenAIExample(),
),
),
);
}
}
class OpenAIExample extends StatefulWidget {
@override
_OpenAIExampleState createState() => _OpenAIExampleState();
}
class _OpenAIExampleState extends State<OpenAIExample> {
final OpenAI _openAI = OpenAI(apiKey: '你的OpenAI API密钥'); // 替换为你的API密钥
String _response = '';
void _callOpenAI() async {
try {
var response = await _openAI.createCompletion(
model: 'text-davinci-003', // 你可以根据需要选择其他模型
prompt: '请写一段关于Flutter的介绍。',
maxTokens: 150,
temperature: 0.7,
);
setState(() {
_response = response.choices!.first.text;
});
} catch (e) {
setState(() {
_response = 'Error: ${e.message}';
});
}
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('OpenAI API响应:'),
Text(_response, style: TextStyle(fontSize: 18)),
SizedBox(height: 20),
ElevatedButton(
onPressed: _callOpenAI,
child: Text('调用OpenAI'),
),
],
);
}
}
注意事项
- API密钥管理:在生产环境中,请不要将API密钥硬编码在代码中。使用环境变量或密钥管理服务来管理你的密钥。
- 错误处理:示例代码中的错误处理相对简单。在实际应用中,你可能需要更复杂的错误处理逻辑。
- 模型选择:根据你的需求选择合适的OpenAI模型。
text-davinci-003
是一个功能强大的模型,但可能会产生较高的费用。 - API配额:OpenAI对每个API密钥都有一定的请求配额。确保你的应用不会超出配额限制。
这个示例代码应该能帮助你开始在Flutter应用中集成和使用OpenAI API。如果你有任何其他问题或需要进一步的帮助,请随时告诉我!