Flutter人工智能聊天插件gemini_ai_chat的使用
Flutter人工智能聊天插件gemini_ai_chat的使用

本插件将Gemini的功能无缝集成到您的应用程序中,包含清晰的代码、强大的异常处理和与新旧Flutter应用平滑集成。此外,它还包括支持语音聊天、纯文本聊天和图文聊天的聊天功能。
示例
纯文本输入 | 图文输入 |
---|---|
![]() |
![]() |
安装
在使用之前,请确保完成以下步骤:
- ✅ 前置条件
- ✅ 初始化GeminiAI
前置条件
要使用Gemini AI,您需要获取Gemini AI的API密钥。为此,您需要在Google AI平台上注册一个Gemini账户。一旦获得Gemini API密钥,您就可以开始使用了!
初始化GeminiAI
在使用GeminiAI之前,您需要对其进行初始化,并添加您的API密钥。
const apiKey = "--- 您的GeminiAI API密钥 ---";
final geminiAI = GeminiAI(
apiKey: apiKey,
);
使用方法
纯文本/语音输入
您可以生成基于文本的内容,通过在方法中传递查询(字符串)来实现。 注意:这最适合用于仅使用文本或语音输入生成内容,因为它使用的是Gemini-pro模型。
String query = "---- 您的查询字符串 ----";
geminiAI.generateTextFromQuery(query)
.then((value) => print(value.text))
.catchError((e) => print(e));
纯文本输入 | 语音输入 |
---|---|
![]() |
![]() |
文本和图像输入
您还可以通过从设备的图库(或相机)中选择一张图片并添加查询(字符串)来生成基于文本的内容。
// 获取您要分析的文件,或者从资源包中引用它
File image = File("assets/myimage.png");
String queryText = "---- 您的查询字符串 ----";
geminiAI.generateTextFromQueryAndImages(
query: queryText,
image: image
)
.then((value) => print(value.text))
.catchError((e) => print(e));
额外配置
该库是为普通用户设计的。但是,如果您希望自定义响应,可以通过自定义GenerationConfig
来实现。
添加自定义配置
// 生成配置
final config = GenerationConfig(
temperature: 0.5, // 温度控制令牌选择的随机程度
maxOutputTokens: 100, // 令牌限制确定文本输出的最大量。100个令牌大约是60-80个单词。
topP: 1.0, // Top-p,也称为核采样,控制生成令牌的累积概率
topK: 40, // top-k参数限制模型在生成过程中的每一步选择最可能的前k个令牌
stopSequences: [] // 使用唯一的字符序列定义模型的停止信号,以中断内容生成。选择一个不太可能出现在生成内容中的序列,以避免意外中断。
);
// 将配置添加到实例
const apiKey = "--- 您的GeminiAI API密钥 ---";
// Gemini实例
final geminiAI = GeminiAI(
apiKey: apiKey,
config: config // 这里放置配置
);
安全设置
为了确保响应针对特定年龄组、目标人群或产品使用场景进行过滤,可以调整安全设置。
安全类别
这是插件中的基本类别,您可能需要根据需求进行调整。
HARM_CATEGORY_UNSPECIFIED
HARM_CATEGORY_DEROGATORY
HARM_CATEGORY_TOXICITY
HARM_CATEGORY_VIOLENCE
HARM_CATEGORY_SEXUAL
HARM_CATEGORY_MEDICAL
HARM_CATEGORY_DANGEROUS
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_DANGEROUS_CONTENT
安全阈值
这调节您的安全频率。
HARM_BLOCK_THRESHOLD_UNSPECIFIED
BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
BLOCK_ONLY_HIGH
BLOCK_NONE
使用方法
指定要使用的类别
// 安全设置
final safety1 = SafetySettings(
category: SafetyCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold: SafetyThreshold.BLOCK_ONLY_HIGH
);
/* 将其添加到GeminiAI实例 */
final geminiAI = GeminiAI(
apiKey:"--- 您的GeminiAI API密钥 ---",
safetySettings: [
safety1,
// safety2
]
);
示例代码
以下是完整的示例代码:
import 'package:example/gemini_ai_voice_chat.dart';
import 'package:flutter/material.dart';
const apiKey = ""; // 请在此处填入您的GeminiAI API密钥
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
useMaterial3: true,
),
home: const GeminiVoiceChat(),
);
}
}
更多关于Flutter人工智能聊天插件gemini_ai_chat的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter人工智能聊天插件gemini_ai_chat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用gemini_ai_chat
插件的一个基本示例。假设你已经安装并配置好了Flutter开发环境,以及创建了一个新的Flutter项目。以下步骤将指导你如何在你的Flutter应用中使用gemini_ai_chat
插件。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加gemini_ai_chat
的依赖。如果插件尚未在pub.dev上发布(这是一个假设的插件名,实际情况可能会有所不同),你可能需要从源代码或私有仓库添加依赖。这里假设它已经在pub.dev上可用:
dependencies:
flutter:
sdk: flutter
gemini_ai_chat: ^latest_version # 替换为实际最新版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你的Dart文件中导入插件。例如,在main.dart
中:
import 'package:flutter/material.dart';
import 'package:gemini_ai_chat/gemini_ai_chat.dart'; // 导入插件
3. 初始化插件并创建聊天界面
接下来,你需要初始化插件并创建一个聊天界面。以下是一个简单的示例,展示了如何使用该插件:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Gemini AI Chat Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ChatScreen(),
);
}
}
class ChatScreen extends StatefulWidget {
@override
_ChatScreenState createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
late GeminiAIChat _chatClient;
@override
void initState() {
super.initState();
// 初始化聊天客户端,这里假设需要API密钥或其他配置
_chatClient = GeminiAIChat(
apiKey: 'your_api_key_here', // 替换为你的API密钥
// 其他配置参数(如果有)
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Gemini AI Chat'),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextField(
decoration: InputDecoration(
labelText: 'Message',
border: OutlineInputBorder(),
),
onChanged: (String message) {
// 在这里可以添加发送消息的逻辑
_sendMessage(message);
},
onEditingComplete: () {
// 发送消息后关闭键盘
FocusScope.of(context).unfocus();
},
),
SizedBox(height: 16),
Expanded(
child: ChatMessages(), // 假设这是一个显示聊天记录的组件
),
],
),
),
);
}
Future<void> _sendMessage(String message) async {
try {
var response = await _chatClient.sendMessage(message);
// 处理服务器响应,更新聊天记录等
print('Server response: $response');
} catch (e) {
print('Error sending message: $e');
}
}
}
// ChatMessages 组件的示例实现(简化版)
class ChatMessages extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 这里应该实现显示聊天记录的逻辑
// 由于示例简单,这里只返回一个空的Container
return Container();
}
}
注意事项
- API密钥和配置:在实际应用中,请确保安全地存储和处理API密钥。不要将密钥硬编码在客户端代码中。
- 错误处理:上述示例中的错误处理非常基础。在实际应用中,你应该实现更健壮的错误处理和用户反馈机制。
- UI设计:上述示例中的UI设计非常简化。在实际应用中,你应该根据需求设计更符合用户体验的UI。
- 插件文档:由于
gemini_ai_chat
是一个假设的插件名,实际使用时请参考该插件的官方文档,以获取关于如何正确初始化和使用该插件的详细信息。
希望这个示例能帮助你开始在Flutter项目中使用gemini_ai_chat
插件!如果你有任何其他问题或需要进一步的帮助,请随时提问。