Flutter Google Generative AI插件google_generative_ai的使用
Flutter Google Generative AI插件google_generative_ai的使用
简介
Google AI Dart SDK(google_generative_ai
)使开发者能够使用Google最先进的生成式AI模型(如Gemini)来构建AI驱动的功能和应用程序。该SDK支持以下用例:
- 从纯文本输入生成文本
- 从文本和图像输入(多模态)生成文本
- 构建多轮对话(聊天)
- 嵌入
注意
强烈建议仅在原型设计阶段直接从Flutter应用调用Google AI Gemini API。 如果您计划启用计费,我们强烈建议您仅在服务器端使用SDK调用Google AI Gemini API以确保API密钥的安全。如果直接在移动或Web应用中嵌入API密钥或在运行时远程获取API密钥,可能会导致API密钥暴露给恶意用户。
快速上手
获取API密钥
使用Google AI Dart SDK需要API密钥;请参考官方文档了解如何创建一个API密钥。
将包添加到项目中
通过以下命令将google_generative_ai
包添加到您的项目中:
flutter pub add google_generative_ai
然后在Dart文件中导入:
import 'package:google_generative_ai/google_generative_ai.dart';
使用API
下面是一个简单的示例代码,展示了如何使用google_generative_ai
插件与Gemini模型进行交互:
import 'package:flutter/material.dart';
import 'package:google_generative_ai/google_generative_ai.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Google Generative AI Demo')),
body: Center(child: GenerateStoryButton()),
),
);
}
}
class GenerateStoryButton extends StatefulWidget {
@override
_GenerateStoryButtonState createState() => _GenerateStoryButtonState();
}
class _GenerateStoryButtonState extends State<GenerateStoryButton> {
String storyText = '';
final apiKey = 'YOUR_API_KEY_HERE'; // 替换为您的API密钥
Future<void> generateStory() async {
final model = GenerativeModel(
model: 'gemini-1.5-flash-latest',
apiKey: apiKey,
);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
setState(() {
storyText = response.text ?? 'Failed to generate story.';
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: generateStory,
child: Text('Generate Story'),
),
SizedBox(height: 20),
Text(storyText),
],
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用程序,其中包含一个按钮,点击后会生成关于“魔法背包”的故事,并将其显示在屏幕上。
更多功能
更多示例可以在GitHub仓库中找到。此外,您可以参考官方快速入门指南,了解更多关于初始化模型、调用API以及控制响应的详细信息。
额外文档
有关Google AI SDKs和Gemini模型的更多信息,请访问官方文档。
希望这些信息能帮助您开始使用google_generative_ai
插件!如果您有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter Google Generative AI插件google_generative_ai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Google Generative AI插件google_generative_ai的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用google_generative_ai
插件的示例代码。这个插件允许你访问Google的Generative AI服务(如GPT或其他基于Transformer的模型)来生成文本。
首先,你需要确保你的Flutter项目已经配置好对Google Cloud服务的访问权限,包括设置API密钥和启用相应的API。
1. 添加依赖
在你的pubspec.yaml
文件中添加google_generative_ai
依赖:
dependencies:
flutter:
sdk: flutter
google_generative_ai: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Google Cloud
确保你已经创建了Google Cloud项目,启用了Generative AI API,并创建了服务账户,下载了JSON密钥文件,并将其放置在Flutter项目的合适位置(例如assets/
目录)。
3. 初始化插件并生成文本
在你的Flutter应用中,你可以使用以下代码来初始化google_generative_ai
插件并生成文本:
import 'package:flutter/material.dart';
import 'package:google_generative_ai/v1beta1/generative_ai.dart';
import 'dart:convert' as convert;
import 'dart:io' show File;
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String? generatedText;
@override
void initState() {
super.initState();
_generateText();
}
Future<void> _generateText() async {
// 读取你的Google Cloud服务账户密钥文件
final credentialsFile = File('path/to/your/service-account-file.json');
final credentialsContent = await credentialsFile.readAsString();
// 创建认证客户端
final credentials = convert.jsonDecode(credentialsContent);
final authClient = await googleapis_auth.GoogleAuth.fromJson(credentials)
.withScopes(['https://www.googleapis.com/auth/cloud-platform'])
.build();
// 创建Generative AI客户端
final generativeAi = GenerativeAiServiceClient(credentials: authClient);
// 设置请求参数
final request = GenerateTextRequest()
..prompt = 'Write a short story about a magical forest.'
..maxTokens = 100;
try {
// 发送请求并获取响应
final response = await generativeAi.generateText(request: request);
final generatedTextResponse = response.generations!.first;
setState(() {
generatedText = generatedTextResponse.text!;
});
} catch (e) {
print('Error generating text: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Google Generative AI Example'),
),
body: Center(
child: generatedText != null
? Text(generatedText!)
: CircularProgressIndicator(),
),
),
);
}
}
注意事项
-
安全性:不要将你的服务账户密钥硬编码在客户端应用中。考虑使用更安全的方法来管理密钥,比如使用Google Cloud Secret Manager结合后端服务。
-
API配额和费用:使用Generative AI API可能会产生费用,并且每个项目都有配额限制。请确保你了解这些限制,并根据需要调整。
-
错误处理:上面的代码示例中包含了基本的错误处理,但在实际生产环境中,你可能需要更详细的错误处理和日志记录。
-
依赖版本:确保你使用的是
google_generative_ai
插件的最新版本,并且该版本与你的Flutter SDK版本兼容。 -
API端点:上面的代码使用了
v1beta1
版本的API,这可能会随着Google Generative AI服务的更新而变化。请查阅最新的API文档以获取最新的信息。