Flutter ChatGPT API集成插件chat_gpt_api的使用

Flutter ChatGPT API集成插件chat_gpt_api的使用

chat_gpt: 2.0.0
flutter pub get

特性

  • 文本补全
  • 聊天补全
  • 代码生成
  • 图像生成

开始使用

创建一个ChatGPT实例:

final chatGpt = ChatGPT.builder(token: '<token>');

你可以通过访问OpenAI API密钥页面来生成token。

使用方法

文本补全

文本补全端点可用于多种任务。更多详情请参阅OpenAI官方文档

如何编写提示: 更多详情请参阅OpenAI官方文档

示例代码:

const prompt = "Explain Quantum Computing in simple terms";

Completion? completion = await chatGpt.textCompletion(
  request: const CompletionRequest(
    prompt: prompt,
    maxTokens: 256,
  ),
);

print(completion?.choices);

图像生成

图像生成端点允许你根据文本提示创建原始图像。更多详情请参阅OpenAI官方文档

支持的图像生成类型:

  1. 基于文本提示从零开始创建图像。
  2. 基于新的文本提示编辑现有图像(不支持)。
  3. 基于现有图像创建变体(不支持)。

示例代码:

Images? images = await chatGpt.generateImage(
  request: const ImageRequest(
    prompt: 'A cute baby sea otter',
  ),
);

print(images?.data);

完整示例代码

以下是完整的示例代码,展示了如何在Flutter应用中集成并使用chat_gpt_api插件。

import 'package:chat_gpt_api/chat_gpt.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final chatGpt = ChatGPT.builder(
    token: '<TOKEN>', // 生成token地址:https://beta.openai.com/account/api-keys
  );

  void textCompletion() async {
    const prompt = "Explain Quantum Computing in simple terms";

    Completion? completion = await chatGpt.textCompletion(
      request: CompletionRequest(
        prompt: prompt,
        maxTokens: 256,
      ),
    );

    if (kDebugMode) {
      print(completion?.choices);
    }
  }

  void imageGeneration() async {
    Images? images = await chatGpt.generateImage(
      request: ImageRequest(
        prompt: 'A cute baby sea otter',
      ),
    );

    if (kDebugMode) {
      print(images?.data);
    }
  }

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('你已经按下了按钮很多次:'),
            Text('0', style: Theme.of(context).textTheme.headline4),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: textCompletion,
        tooltip: '增加',
        child: const Icon(Icons.add),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成并使用chat_gpt_api插件的示例代码。这个插件允许你通过ChatGPT API进行文本生成和对话。

步骤 1: 添加依赖

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

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

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

步骤 2: 配置API密钥

为了使用ChatGPT API,你需要一个OpenAI的API密钥。你可以在OpenAI的网站上获取它,并确保它是安全的,不要将其硬编码到你的应用程序中。你可以使用环境变量或安全存储来管理它。

步骤 3: 创建ChatGPT服务类

为了方便管理ChatGPT的API调用,我们可以创建一个服务类。

import 'package:chat_gpt_api/chat_gpt_api.dart';
import 'package:dart_config/dart_config.dart'; // 用于管理环境变量,需要额外安装这个包

class ChatGptService {
  late ChatGptApiClient chatGptApiClient;

  ChatGptService() {
    // 从环境变量中获取API密钥
    String apiKey = Config().getString('OPENAI_API_KEY');
    chatGptApiClient = ChatGptApiClient(apiKey: apiKey);
  }

  Future<String> getMessage(String prompt) async {
    try {
      var response = await chatGptApiClient.sendMessage(
        model: 'gpt-3.5-turbo',  // 或使用其他可用的模型
        prompt: prompt,
        maxTokens: 150,
        n: 1,
        stop: null,
        temperature: 0.7,
        logprobs: null,
        echo: true,
      );
      return response.choices[0].text;
    } catch (e) {
      print('Error: $e');
      return 'Error fetching response from ChatGPT';
    }
  }
}

步骤 4: 使用ChatGptService

在你的Flutter应用中,你可以使用这个服务类来与ChatGPT进行交互。例如,在一个简单的聊天界面中:

import 'package:flutter/material.dart';
import 'chat_gpt_service.dart';  // 导入你刚刚创建的ChatGptService类

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

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

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final ChatGptService chatGptService = ChatGptService();
  final TextEditingController _controller = TextEditingController();
  List<String> messages = [];

  void _sendMessage() async {
    String userMessage = _controller.text;
    messages.add(userMessage);
    setState(() {});

    String chatGptMessage = await chatGptService.getMessage(userMessage);
    messages.add(chatGptMessage);
    setState(() {});

    _controller.clear();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat with ChatGPT'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Expanded(
              child: ListView.builder(
                itemCount: messages.length,
                itemBuilder: (context, index) {
                  bool isUserMessage = index % 2 == 0;
                  return Padding(
                    padding: const EdgeInsets.symmetric(vertical: 4.0),
                    child: Container(
                      padding: EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
                      decoration: BoxDecoration(
                        color: isUserMessage ? Colors.grey[200] : Colors.blueGrey[100],
                        borderRadius: BorderRadius.circular(12.0),
                      ),
                      child: Text(
                        messages[index],
                        style: TextStyle(color: isUserMessage ? Colors.black : Colors.white),
                      ),
                    ),
                  );
                },
              ),
            ),
            TextField(
              controller: _controller,
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'Type a message...',
              ),
            ),
            SizedBox(height: 16.0),
            ElevatedButton(
              onPressed: _sendMessage,
              child: Text('Send'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. 安全性:确保不要将API密钥硬编码到你的应用程序中。使用环境变量或安全存储来管理它。
  2. 错误处理:在实际应用中,添加更多的错误处理和用户反馈,以提高用户体验。
  3. API配额:ChatGPT API有配额限制,确保你了解并管理你的使用量。

通过上述步骤,你应该能够在Flutter应用中成功集成并使用ChatGPT API。

回到顶部