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

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

FlutterXGemini

本插件将Gemini的功能无缝集成到您的应用程序中,包含清晰的代码、强大的异常处理和与新旧Flutter应用平滑集成。此外,它还包括支持语音聊天、纯文本聊天和图文聊天的聊天功能。

示例

纯文本输入 图文输入

安装

在使用之前,请确保完成以下步骤:

前置条件

要使用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

1 回复

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

注意事项

  1. API密钥和配置:在实际应用中,请确保安全地存储和处理API密钥。不要将密钥硬编码在客户端代码中。
  2. 错误处理:上述示例中的错误处理非常基础。在实际应用中,你应该实现更健壮的错误处理和用户反馈机制。
  3. UI设计:上述示例中的UI设计非常简化。在实际应用中,你应该根据需求设计更符合用户体验的UI。
  4. 插件文档:由于gemini_ai_chat是一个假设的插件名,实际使用时请参考该插件的官方文档,以获取关于如何正确初始化和使用该插件的详细信息。

希望这个示例能帮助你开始在Flutter项目中使用gemini_ai_chat插件!如果你有任何其他问题或需要进一步的帮助,请随时提问。

回到顶部