Flutter AI生成插件generate_ai_dart的使用

Flutter AI生成插件generate_ai_dart的使用

Google AI SDK for flutter

Google AI客户端SDK为Flutter开发者提供了使用谷歌最先进的生成式AI模型(如Gemini)来构建AI功能和应用的能力。此SDK支持以下用例:

  • 仅从文本输入生成文本
  • 从文本和图像输入生成文本(多模态)
  • 构建多轮对话(聊天)

例如,只需几行代码,你就可以访问Gemini的多模态能力,从文本和图像输入生成文本:

const key = "你的API密钥";

final config = generationConfig((builder) {
  builder.temperature = 0.7;
});
 final model = GenerativeModel(Model.geminiPro, key, generationConfig: config);
model.generateContentFromText("什么是Flutter?").then((value) => print(value.text));

尝试示例Flutter应用

此仓库包含一个演示示例应用,展示了如何使用SDK访问并利用Gemini模型进行各种用例。

安装和使用

在你的Flutter项目中添加依赖项 flutter pub add generate_ai_dart

示例代码

以下是示例应用的代码:

import 'package:flutter/material.dart';

import 'ChatExample.dart'; // 聊天示例
import 'GeminiProExample.dart'; // Gemini Pro 示例
import 'VisionProExample.dart'; // Gemini ProVision 示例

void main() {
  runApp(const MaterialApp(
    home: MainPage(),
    debugShowCheckedModeBanner: false,
  ));
}

class MainPage extends StatelessWidget {
  const MainPage({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('导航'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text("Gemini ProVision 示例"),
            ElevatedButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => const VisionProExample()),
                );
              },
              child: const Text('测试'),
            ),
            const SizedBox(height: 20),
            const Text("Gemini Pro 示例"),
            ElevatedButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => const GeminiProExample()),
                );
              },
              child: const Text('测试'),
            ),
            const Text("聊天 示例"),
            ElevatedButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => const ChatPage()),
                );
              },
              child: const Text('测试'),
            ),
          ],
        ),
      ),
    );
  }
}

详细示例

VisionProExample 示例

import 'package:flutter/material.dart';
import 'package:generate_ai_dart/generate_ai_dart.dart';

class VisionProExample extends StatefulWidget {
  [@override](/user/override)
  _VisionProExampleState createState() => _VisionProExampleState();
}

class _VisionProExampleState extends State<VisionProExample> {
  String result = "";

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Gemini ProVision 示例"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                const key = "你的API密钥";
                final config = generationConfig((builder) {
                  builder.temperature = 0.7;
                });
                final model = GenerativeModel(Model.geminiPro, key, generationConfig: config);
                final response = await model.generateContentFromText("描述这张图片的内容", image: "path/to/image");
                setState(() {
                  result = response.text;
                });
              },
              child: Text("生成文本"),
            ),
            SizedBox(height: 20),
            Text(result),
          ],
        ),
      ),
    );
  }
}

GeminiProExample 示例

import 'package:flutter/material.dart';
import 'package:generate_ai_dart/generate_ai_dart.dart';

class GeminiProExample extends StatefulWidget {
  [@override](/user/override)
  _GeminiProExampleState createState() => _GeminiProExampleState();
}

class _GeminiProExampleState extends State<GeminiProExample> {
  String result = "";

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Gemini Pro 示例"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                const key = "你的API密钥";
                final config = generationConfig((builder) {
                  builder.temperature = 0.7;
                });
                final model = GenerativeModel(Model.geminiPro, key, generationConfig: config);
                final response = await model.generateContentFromText("什么是Flutter?");
                setState(() {
                  result = response.text;
                });
              },
              child: Text("生成文本"),
            ),
            SizedBox(height: 20),
            Text(result),
          ],
        ),
      ),
    );
  }
}

ChatPage 示例

import 'package:flutter/material.dart';
import 'package:generate_ai_dart/generate_ai_dart.dart';

class ChatPage extends StatefulWidget {
  [@override](/user/override)
  _ChatPageState createState() => _ChatPageState();
}

class _ChatPageState extends State<ChatPage> {
  List<String> chatHistory = [];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("聊天 示例"),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: chatHistory.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(chatHistory[index]),
                );
              },
            ),
          ),
          Padding(
            padding: EdgeInsets.all(8.0),
            child: Row(
              children: [
                Expanded(
                  child: TextField(
                    onSubmitted: (text) async {
                      setState(() {
                        chatHistory.add("User: $text");
                      });

                      const key = "你的API密钥";
                      final config = generationConfig((builder) {
                        builder.temperature = 0.7;
                      });
                      final model = GenerativeModel(Model.geminiPro, key, generationConfig: config);
                      final response = await model.generateContentFromText(text);
                      setState(() {
                        chatHistory.add("AI: ${response.text}");
                      });
                    },
                    decoration: InputDecoration(hintText: "输入消息..."),
                  ),
                ),
                IconButton(
                  icon: Icon(Icons.send),
                  onPressed: () {},
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter AI生成插件generate_ai_dart的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter AI生成插件generate_ai_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


generate_ai_dart 是一个用于在 Flutter 项目中生成 AI 相关代码的插件。这个插件可以帮助开发者快速生成与 AI 功能相关的 Dart 代码,从而加速开发过程。以下是如何使用 generate_ai_dart 插件的基本步骤和示例。

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 generate_ai_dart 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  generate_ai_dart: ^1.0.0  # 请确保使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你需要使用 AI 功能的 Dart 文件中导入 generate_ai_dart 插件。

import 'package:generate_ai_dart/generate_ai_dart.dart';

3. 使用插件生成代码

generate_ai_dart 插件通常提供了一些方法来生成 AI 相关的代码,例如生成模型、服务、API 调用等。

示例 1: 生成 AI 模型

假设你需要生成一个用于文本生成的 AI 模型,可以使用 generateTextModel 方法。

void main() {
  // 生成文本生成模型
  var textModel = generateTextModel(
    modelName: 'TextGenerationModel',
    input: 'String',
    output: 'String',
  );

  print(textModel);
}

示例 2: 生成 API 调用

如果你需要通过 API 调用 AI 服务,可以使用 generateApiCall 方法。

void main() {
  // 生成 API 调用代码
  var apiCall = generateApiCall(
    apiName: 'TextGenerationAPI',
    endpoint: 'https://api.example.com/generate',
    method: 'POST',
    parameters: {'text': 'String'},
    responseType: 'String',
  );

  print(apiCall);
}

4. 运行生成的代码

生成的代码可以直接在 Flutter 项目中使用。你可以将其复制到你的项目中,并根据需要进行修改。

5. 自定义生成器

generate_ai_dart 插件通常允许你自定义生成器,以满足特定的需求。你可以通过插件提供的配置选项来调整生成的代码。

void main() {
  // 自定义生成器
  var customGenerator = CustomGenerator(
    modelName: 'CustomModel',
    input: 'String',
    output: 'String',
    additionalParameters: {'param1': 'String', 'param2': 'int'},
  );

  var customModel = customGenerator.generate();

  print(customModel);
}
回到顶部