Flutter智能回复插件google_mlkit_smart_reply的使用

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

Flutter智能回复插件google_mlkit_smart_reply的使用

Google’s ML Kit Smart Reply for Flutter

Pub Version analysis Star on Github License: MIT

这是一个Flutter插件,用于使用 Google’s ML Kit Smart Reply API 自动生成与消息相关的回复。

注意事项

在继续或发布新的 问题 之前,请务必阅读以下内容:

  • Google’s ML Kit 仅支持移动平台:iOS和Android应用。Web或其他平台不受支持,您可以在 他们的仓库 请求对这些平台的支持。
  • 此插件不是由Google赞助或维护的。作者 是一群对机器学习充满热情的开发者,他们希望将Google的原生API暴露给Flutter。
  • Google的ML Kit API仅针对iOS和Android原生开发。此插件使用Flutter平台通道(Platform Channels),如这里 所述。
  • 消息通过平台通道异步传递,以确保用户界面保持响应。更多关于平台通道的信息请参阅这里
  • 由于此插件使用平台通道,所有机器学习处理都在原生平台上进行,而不是在Flutter/Dart中。因此,在调试模型或应用程序错误时,请理解这一点。

Requirements

iOS

  • 最低iOS部署目标:15.5.0
  • Xcode 15.3.0或更新版本
  • Swift 5
  • ML Kit不支持32位架构(i386和armv7)。ML Kit支持64位架构(x86_64和arm64)。更多信息请参阅这里

Android

  • minSdkVersion: 21
  • targetSdkVersion: 33
  • compileSdkVersion: 34

Usage

Smart Reply

创建一个SmartReply实例

final smartReply = SmartReply();

添加消息到对话中

// 对于本地用户
smartReply.addMessageToConversationFromLocalUser(message, timestamp);

// 对于远程用户
smartReply.addMessageToConversationFromRemoteUser(message, timestamp, userId);

生成回复

final response = await smartReply.suggestReplies();

for (final suggestion in response.suggestions) {
  print('suggestion: $suggestion');
}

使用close()释放资源

smartReply.close();

示例App

您可以在这里找到示例App: example app

完整示例Demo

下面是一个完整的示例,展示了如何在Flutter项目中使用google_mlkit_smart_reply插件:

1. 添加依赖

pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  google_mlkit_smart_reply: ^latest_version # 替换为最新版本号

2. 初始化并使用SmartReply

创建一个新的Dart文件,例如main.dart,并在其中编写以下代码:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Smart Reply Demo')),
        body: SmartReplyScreen(),
      ),
    );
  }
}

class SmartReplyScreen extends StatefulWidget {
  @override
  _SmartReplyScreenState createState() => _SmartReplyScreenState();
}

class _SmartReplyScreenState extends State<SmartReplyScreen> {
  final SmartReply _smartReply = SmartReply();
  List<String> _messages = [];
  List<String> _suggestions = [];

  void _addMessage(String message, bool isLocalUser) {
    if (isLocalUser) {
      _smartReply.addMessageToConversationFromLocalUser(message, DateTime.now().millisecondsSinceEpoch);
    } else {
      _smartReply.addMessageToConversationFromRemoteUser(message, DateTime.now().millisecondsSinceEpoch, 'user_id');
    }
    setState(() {
      _messages.add(message);
    });
  }

  Future<void> _generateSuggestions() async {
    final response = await _smartReply.suggestReplies();
    setState(() {
      _suggestions = response.suggestions.map((s) => s.text).toList();
    });
  }

  @override
  void dispose() {
    _smartReply.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: _messages.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(_messages[index]),
                );
              },
            ),
          ),
          ElevatedButton(
            onPressed: () {
              _addMessage('Hello', true);
              _generateSuggestions();
            },
            child: Text('Send Message'),
          ),
          SizedBox(height: 16),
          Text('Suggestions:'),
          ..._suggestions.map((suggestion) => ListTile(title: Text(suggestion))).toList(),
        ],
      ),
    );
  }
}

这个示例展示了如何初始化SmartReply对象,向对话中添加消息,并生成智能回复建议。它还展示了如何在用户界面中显示这些信息。

Contributing

欢迎贡献代码。如果有任何问题,请先查看现有的 问题,如果找不到相关的问题可以新开一个issue。对于非平凡的修复,请先创建一个issue再提交 pull request。对于平凡的修复,可以直接提交pull request。

希望这些信息能帮助你更好地理解和使用google_mlkit_smart_reply插件!


更多关于Flutter智能回复插件google_mlkit_smart_reply的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter智能回复插件google_mlkit_smart_reply的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用google_mlkit_smart_reply插件的示例代码。这个插件可以帮助你实现智能回复功能,通常用于聊天应用中,根据用户的消息提供可能的回复建议。

首先,确保你已经在pubspec.yaml文件中添加了google_mlkit_smart_reply依赖:

dependencies:
  flutter:
    sdk: flutter
  google_mlkit_smart_reply: ^x.y.z  # 请替换为最新版本号

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

接下来,你可以按照以下步骤在你的Flutter应用中实现智能回复功能:

  1. 初始化插件并获取SmartReply实例
import 'package:flutter/material.dart';
import 'package:google_mlkit_smart_reply/google_mlkit_smart_reply.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SmartReplyScreen(),
    );
  }
}

class SmartReplyScreen extends StatefulWidget {
  @override
  _SmartReplyScreenState createState() => _SmartReplyScreenState();
}

class _SmartReplyScreenState extends State<SmartReplyScreen> {
  late SmartReply _smartReply;
  late List<String> _suggestions;
  late String _userMessage;

  @override
  void initState() {
    super.initState();
    _smartReply = SmartReply.instance;
    _suggestions = [];
    _userMessage = '';
  }

  void _getUserMessage(String message) {
    setState(() {
      _userMessage = message;
      // 调用智能回复函数
      _getSmartReplies(message);
    });
  }

  void _getSmartReplies(String message) async {
    try {
      List<SmartReplySuggestion> suggestions = await _smartReply.suggestReplies(
        text: message,
        options: SmartReplyOptions(
          // 可选配置,如设置语言代码等
        ),
      );
      setState(() {
        _suggestions = suggestions.map((suggestion) => suggestion.text).toList();
      });
    } catch (e) {
      print('Error fetching smart replies: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Smart Reply Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextField(
              decoration: InputDecoration(
                labelText: 'Enter your message',
              ),
              onChanged: _getUserMessage,
            ),
            SizedBox(height: 16),
            Text(
              'Suggestions:',
              style: TextStyle(fontWeight: FontWeight.bold),
            ),
            SizedBox(height: 8),
            Wrap(
              spacing: 8,
              runSpacing: 8,
              children: _suggestions.map((suggestion) => Chip(
                label: Text(suggestion),
              )).toList(),
            ),
          ],
        ),
      ),
    );
  }
}
  1. 注意事项

    • 在实际使用中,你可能需要处理更多的错误情况和边缘情况。
    • 根据需要调整UI设计,以符合你的应用风格。
    • 插件可能会要求特定的权限(如网络权限),确保在AndroidManifest.xmlInfo.plist中正确配置。
  2. 权限配置(如果需要):

    • AndroidManifest.xml中添加网络权限(如果插件需要):
      <uses-permission android:name="android.permission.INTERNET"/>
      
    • Info.plist中添加相应的iOS权限(如果适用)。

以上是一个简单的示例,展示了如何在Flutter中使用google_mlkit_smart_reply插件实现智能回复功能。根据你的具体需求,你可以进一步扩展和优化这个示例。

回到顶部