Flutter OpenAI助手插件assistant_openai的使用

Flutter OpenAI助手插件assistant_openai的使用

通过OpenAI的助手API为您的Flutter应用赋能,该API旨在帮助开发者构建能够执行多种任务的强大AI助手。(非官方插件)

如何使用助手(Beta)

助手API旨在帮助开发者构建能够执行多种任务的强大AI助手。

注意: 助手API目前处于Beta阶段,我们正在积极添加更多功能。如果您有任何反馈,请在我们的开发者论坛中分享。

助手的主要功能:

  • 助手可以根据特定指令调用OpenAI的模型,以调整其个性和能力。
  • 助手可以并行访问多种工具,包括OpenAI托管的工具(例如代码解释器和知识检索)以及您通过函数调用构建/托管的工具。
  • 助手可以利用持久线程简化AI应用程序开发。线程存储消息历史记录,并在对话变得过长时截断它,以适应模型的上下文长度。创建一个线程后,用户回复时可以追加消息。
  • 助手可以在各种格式的文件中工作,作为其创建的一部分或作为助手与用户之间的线程的一部分。使用工具时,助手可以创建文件(例如图像、电子表格等),并在他们创建的消息中引用这些文件。

安装

pubspec.yaml文件中添加以下依赖项:

dependencies:
  assistant_openai: ^1.0.1

初始化

在项目中导入并使用:

import 'package:assistant_openai/openaiassistant.dart';

var client = OpenAIAssistant(apiKey: 'YOUR_OPENAI_API_KEY', organizationID: 'YOUR_ORGANIZATION_ID');

创建助手

/// 创建一个新的助手对象
var newAssistant = NewAssistantModel(
    name: "ASSISTANT_NAME",
    description: "My Math assistant", // 描述助手
    instructions: "You are a math tutor", // 指令
    model: "gpt-4", // 使用的模型
    tools: [
      Tool(type: "retrieval") // 工具类型
    ],
    fileIds: ['fieldID'], // 文件ID
 );

/// 使用客户端创建助手
var assistant = await client.assistant.create(newAssistant);

/// 输出助手的详细信息
print(assistant!.name);
print(assistant.model);
print(assistant.instructions);
print(assistant.tools);
print(assistant.fileIds);
print(assistant.description);
print(assistant.metadata);

获取助手

/// 使用客户端获取助手
var retrievedAssistant = await client.assistant.retrieve('PARSE_ASSISTANT_ID_HERE');

/// 输出助手的详细信息
print(retrievedAssistant!.name);
print(retrievedAssistant.model);
print(retrievedAssistant.instructions);
print(retrievedAssistant.tools);
print(retrievedAssistant.fileIds);
print(retrievedAssistant.description);
print(retrievedAssistant.metadata);

修改助手

/// 使用客户端修改助手
var assistantDetails = AssistantModel(
  id: "ASSISTANT_ID",
  name: "ASSISTANT_NAME",
  description: "My Math assistant",
  instructions: "You are a math tutor",
  model: "gpt-4",
  object: "assistant",
  fileIds: ['fieldID'],
  createdAt: INT,
  tools: [],
  metadata: Map<dynamic, dynamic>,
);

var assistant = await client.assistant.modify(assistantDetails);

/// 输出助手的详细信息
print(assistant!.name);
print(assistant.model);
print(assistant.instructions);
print(assistant.tools);
print(assistant.fileIds);
print(assistant.description);
print(assistant.metadata);

更多关于Flutter OpenAI助手插件assistant_openai的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用assistant_openai插件的示例代码。这个插件允许你与OpenAI的API进行交互,例如使用GPT-3或其他OpenAI模型来生成文本。

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

dependencies:
  flutter:
    sdk: flutter
  assistant_openai: ^latest_version  # 请替换为最新的版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用assistant_openai插件:

  1. 配置OpenAI API密钥

确保你有OpenAI的API密钥,并将其存储在一个安全的地方。在这个示例中,我们假设你已经将API密钥存储在一个环境变量中。

  1. 创建OpenAI客户端
import 'package:assistant_openai/assistant_openai.dart';
import 'package:flutter/material.dart';
import 'dart:convert';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('OpenAI Assistant Example'),
        ),
        body: Center(
          child: OpenAIAssistantExample(),
        ),
      ),
    );
  }
}

class OpenAIAssistantExample extends StatefulWidget {
  @override
  _OpenAIAssistantExampleState createState() => _OpenAIAssistantExampleState();
}

class _OpenAIAssistantExampleState extends State<OpenAIAssistantExample> {
  late OpenAIAssistant openAIAssistant;
  String? responseText;

  @override
  void initState() {
    super.initState();
    // 从环境变量中获取API密钥(这里假设你已经在.env文件中配置了API_KEY)
    String apiKey = DotEnv().env['API_KEY'] ?? '';

    openAIAssistant = OpenAIAssistant(apiKey: apiKey);
  }

  void fetchResponse() async {
    try {
      Map<String, dynamic> requestBody = {
        'model': 'text-davinci-003', // 使用GPT-3模型
        'prompt': 'Hello, how are you?',
        'max_tokens': 150,
        'temperature': 0.7,
      };

      var response = await openAIAssistant.createCompletion(requestBody);

      if (response.statusCode == 200) {
        var responseBody = jsonDecode(response.body);
        setState(() {
          responseText = responseBody['choices'][0]['text'];
        });
      } else {
        setState(() {
          responseText = 'Error: ${response.statusCode}';
        });
      }
    } catch (e) {
      setState(() {
        responseText = 'Error: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ElevatedButton(
          onPressed: fetchResponse,
          child: Text('Ask OpenAI'),
        ),
        if (responseText != null)
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: Text(
              responseText!,
              style: TextStyle(fontSize: 18),
            ),
          ),
      ],
    );
  }
}

注意

  • 上述代码中使用了dotenv包来管理环境变量。你需要在pubspec.yaml中添加dotenv依赖,并在项目根目录下创建一个.env文件来存储你的API密钥。
  • 你需要确保你的.env文件被正确加载。这通常涉及到在main.dart文件的顶部添加一些代码来加载环境变量。
  1. 加载环境变量(在main.dart文件的顶部添加):
import 'package:dotenv/dotenv.dart' show loadDotenv;

void main() async {
  await loadDotenv(); // 加载.env文件
  runApp(MyApp());
}
  1. 创建.env文件(在项目根目录下):
API_KEY=your_openai_api_key_here

请替换your_openai_api_key_here为你的实际OpenAI API密钥。

这样,你就可以在Flutter应用中与OpenAI的API进行交互了。点击按钮后,应用将向OpenAI发送请求,并在界面上显示生成的文本。

回到顶部