Flutter客户端集成插件mistralai_client_dart的使用

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

Flutter客户端集成插件mistralai_client_dart的使用

描述

mistralai_client_dart 是一个非官方的Dart/Flutter客户端,用于与Mistral AI API进行交互。

安装

在你的项目中添加此插件,运行以下命令:

dart pub add mistralai_client_dart

使用

创建客户端

首先,你需要创建一个MistralAIClient实例,并提供你的API密钥:

import 'package:mistralai_client_dart/mistralai_client_dart.dart';

final client = MistralAIClient(apiKey: 'your api key here');

列出模型

你可以通过调用listModels()方法来获取可用的模型列表:

final modelsResult = await client.listModels();
final models = modelsResult.data?.map((e) => e.id).toList();
print(models?.join(', '));

聊天功能

非流式聊天

发送一条消息并接收回复:

const request = ChatCompletionRequest(
  model: 'mistral-small-latest',
  messages: [
    UserMessage(content: UserMessageContent.string('Hello chat!')),
  ],
);
final chatCompletion = await client.chatComplete(request: request);
final chatMessage = chatCompletion.choices?[0].message;
print(chatMessage?.content);

流式聊天

实时接收聊天回复:

final stream = client.chatStream(request: request);
await for (final completionChunk in stream) {
  final chatMessage = completionChunk.choices[0].delta.content;
  if (chatMessage != null) {
    print(chatMessage);
  }
}

生成嵌入向量

使用指定的文本生成嵌入向量:

final embeddings = await client.createEmbeddings(
  request: const EmbeddingRequest(
    model: 'mistral-embed',
    input: EmbeddingRequestInput.arrayString(['Hello chat!']),
  ),
);
for (final data in embeddings.data) {
  print('Embeddings: ${data.embedding}');
}

示例Demo

下面是一个完整的示例demo,演示了如何列出模型、进行聊天以及生成嵌入向量:

// ignore_for_file: avoid_print

import 'package:mistralai_client_dart/mistralai_client_dart.dart';

void main() async {
  // 假设你已经定义了API密钥变量'mistralApiKey'
  final client = MistralAIClient(apiKey: 'your api key here');

  // 列出所有可用模型
  final modelsResult = await client.listModels();
  final models = modelsResult.data?.map((e) => e.id).toList();
  print('Available models: ${models?.join(', ')}');

  // 非流式聊天
  const request = ChatCompletionRequest(
    model: 'mistral-small-latest',
    messages: [
      UserMessage(content: UserMessageContent.string('Hello chat!')),
    ],
  );
  final chatCompletion = await client.chatComplete(request: request);
  final chatMessage = chatCompletion.choices?[0].message;
  print('Chat response: ${chatMessage?.content}');

  // 流式聊天
  final stream = client.chatStream(request: request);
  await for (final completionChunk in stream) {
    final chatMessage = completionChunk.choices[0].delta.content;
    if (chatMessage != null) {
      print('Streamed chat message: $chatMessage');
    }
  }

  // 生成嵌入向量
  final embeddings = await client.createEmbeddings(
    request: const EmbeddingRequest(
      model: 'mistral-embed',
      input: EmbeddingRequestInput.arrayString(['Hello chat!']),
    ),
  );
  for (final data in embeddings.data) {
    print('Embedding: ${data.embedding}');
  }
}

请注意,你需要替换 'your api key here' 为你自己的Mistral AI API密钥。此外,确保你已经在你的项目中正确配置了网络权限(例如,在Android的AndroidManifest.xml文件中添加互联网权限)。


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

1 回复

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


当然,下面是一个关于如何在Flutter客户端中集成并使用mistralai_client_dart插件的示例代码。请注意,此代码假设你已经有一个Flutter项目,并且已经正确配置了Dart环境。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加mistralai_client_dart依赖:

dependencies:
  flutter:
    sdk: flutter
  mistralai_client_dart: ^最新版本号 # 替换为实际最新版本号

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

2. 导入插件

在你需要使用mistralai_client_dart插件的Dart文件中导入它:

import 'package:mistralai_client_dart/mistralai_client_dart.dart';

3. 初始化客户端

假设mistralai_client_dart插件需要一些初始化参数(这取决于插件的实际API),你可以这样初始化客户端:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 初始化客户端(假设需要API Key)
    final mistralaiClient = MistralaiClient(apiKey: '你的API_KEY');

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Mistralai Client Demo'),
        ),
        body: Center(
          child: MyHomePage(client: mistralaiClient),
        ),
      ),
    );
  }
}

4. 使用客户端进行API调用

在你的MyHomePage组件中,你可以使用初始化好的客户端来进行API调用。以下是一个示例,展示如何调用一个假设的getData方法:

class MyHomePage extends StatefulWidget {
  final MistralaiClient client;

  MyHomePage({required this.client});

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? dataResult;
  bool isLoading = false;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        if (isLoading) CircularProgressIndicator(),
        if (dataResult != null) Text('Data: $dataResult'),
        ElevatedButton(
          onPressed: () async {
            setState(() {
              isLoading = true;
              dataResult = null; // 清除之前的结果
            });

            try {
              // 假设有一个名为getData的API方法
              final data = await widget.client.getData();
              setState(() {
                dataResult = data.toString(); // 假设返回的是某种数据对象,这里简单转为字符串
                isLoading = false;
              });
            } catch (e) {
              setState(() {
                dataResult = 'Error: ${e.message}';
                isLoading = false;
              });
            }
          },
          child: Text('Fetch Data'),
        ),
      ],
    );
  }
}

注意事项

  1. API文档:务必参考mistralai_client_dart插件的官方文档,因为实际使用中可能需要更多配置参数,或者API方法可能与示例中的不同。
  2. 错误处理:在实际应用中,错误处理会更加复杂,你可能需要更详细地处理不同类型的错误。
  3. 安全性:不要在客户端代码中硬编码敏感信息,如API密钥。考虑使用环境变量或安全的密钥管理服务。

这个示例展示了如何在Flutter应用中集成并使用mistralai_client_dart插件进行基本的API调用。根据你的实际需求,你可能需要进一步调整代码。

回到顶部