Flutter Google Generative AI插件google_generative_ai的使用

发布于 1周前 作者 phonegap100 来自 Flutter

Flutter Google Generative AI插件google_generative_ai的使用

简介

package:google_generative_ai pub package package publisher

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

1 回复

更多关于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(),
        ),
      ),
    );
  }
}

注意事项

  1. 安全性:不要将你的服务账户密钥硬编码在客户端应用中。考虑使用更安全的方法来管理密钥,比如使用Google Cloud Secret Manager结合后端服务。

  2. API配额和费用:使用Generative AI API可能会产生费用,并且每个项目都有配额限制。请确保你了解这些限制,并根据需要调整。

  3. 错误处理:上面的代码示例中包含了基本的错误处理,但在实际生产环境中,你可能需要更详细的错误处理和日志记录。

  4. 依赖版本:确保你使用的是google_generative_ai插件的最新版本,并且该版本与你的Flutter SDK版本兼容。

  5. API端点:上面的代码使用了v1beta1版本的API,这可能会随着Google Generative AI服务的更新而变化。请查阅最新的API文档以获取最新的信息。

回到顶部