1 Get API key
2 动态设置APPkey
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "flutter_application_gemini",
"cwd": "flutter_application_gemini",
"request": "launch",
"type": "dart",
"args": ["--dart-define=API_KEY=你的appkey"]
},
{
"name": "flutter_application_gemini (profile mode)",
"cwd": "flutter_application_gemini",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "flutter_application_gemini (release mode)",
"cwd": "flutter_application_gemini",
"request": "launch",
"type": "dart",
"flutterMode": "release"
}
]
}
3 获取Gemmi Flutter SDK
google_generative_ai: ^0.2.2
4 识别文字较慢
/// ai 内容
String _content = "";
/// 生成文字内容
Future<String?> _doContentGeneration(String value) async {
// 生成模型
final model = GenerativeModel(
// 模型名称
model: 'gemini-pro',
// API 密钥
apiKey: MyApp.apiKey,
// 根据可能的有害性调整您看到回复的可能性。基于内容有害性的概率进行屏蔽。
safetySettings: [
SafetySetting(HarmCategory.harassment, HarmBlockThreshold.medium), // 骚扰
SafetySetting(
HarmCategory.hateSpeech, HarmBlockThreshold.medium), // 仇恨言论
SafetySetting(
HarmCategory.sexuallyExplicit, HarmBlockThreshold.medium), // x暗示
SafetySetting(
HarmCategory.dangerousContent, HarmBlockThreshold.medium), // 危险内容
],
);
// 提问词列表
final content = [
Content.text(value),
];
// 请求返回
final response = await model.generateContent(content);
return response.text;
}
5 识别文字 较快
/// ai 内容
String _content = "";
/// 生成文字内容
Future<void> _doContentStream(String value) async {
// 生成模型
final model = GenerativeModel(
// 模型名称
model: 'gemini-pro',
// API 密钥
apiKey: MyApp.apiKey,
// 根据可能的有害性调整您看到回复的可能性。基于内容有害性的概率进行屏蔽。
safetySettings: [
SafetySetting(HarmCategory.harassment, HarmBlockThreshold.medium), // 骚扰
SafetySetting(
HarmCategory.hateSpeech, HarmBlockThreshold.medium), // 仇恨言论
SafetySetting(
HarmCategory.sexuallyExplicit, HarmBlockThreshold.medium), // x暗示
SafetySetting(
HarmCategory.dangerousContent, HarmBlockThreshold.medium), // 危险内容
],
);
// 提问词列表
final content = [
Content.text(value),
];
// 清空
setState(() {
_content = "";
});
// 流失接收
model.generateContentStream(content).listen((event) {
setState(() {
_content += event.text ?? "";
});
});
}
6 识别图片
/// 图片识别
Future<String?> _doVisionGeneration(String value) async {
// 生成模型
final model = GenerativeModel(
// 模型名称
model: 'gemini-pro-vision',
// API 密钥
apiKey: MyApp.apiKey,
// 根据可能的有害性调整您看到回复的可能性。基于内容有害性的概率进行屏蔽。
safetySettings: [
SafetySetting(HarmCategory.harassment, HarmBlockThreshold.medium), // 骚扰
SafetySetting(
HarmCategory.hateSpeech, HarmBlockThreshold.medium), // 仇恨言论
SafetySetting(
HarmCategory.sexuallyExplicit, HarmBlockThreshold.medium), // x暗示
SafetySetting(
HarmCategory.dangerousContent, HarmBlockThreshold.medium), // 危险内容
],
);
// 提问词列表
final (firstImage, secondImage) = await (
loadImage('assets/images/1.jpg'),
loadImage('assets/images/2.jpg'),
// File('assets/images/1.jpg').readAsBytes(),
// File('assets/images/1.jpg').readAsBytes()
).wait;
final prompt = TextPart(value);
final imageParts = [
DataPart('image/jpeg', firstImage),
DataPart('image/jpeg', secondImage),
];
final response = await model.generateContent([
Content.multi([prompt, ...imageParts])
]);
// 请求返回
return response.text;
}
参考:
https://ai.google.dev/tutorials/quickstart?hl=zh-cn
https://ai.google.dev/models/gemini?hl=zh-cn
https://github.com/ducafecat/flutter_develop_tips