Flutter 中使用 OpenAI GPT-3 進行語義化處理

語言: CN / TW / HK

Flutter 中使用 OpenAI GPT-3 進行語義化處理

影片

http://www.bilibili.com/video/BV1AA411X7o3/

前言

最近 openai 的 ChatGPT 火了,然後我也想著用它來做點什麼,於是就寫了個 呼叫 openai api 語言執行工具,跑個測試,以後再有功能也可以在這個程式上面試驗。

copilot 也是用的 openai codex

http://github.com/features/copilot/

我估計會在語義識別、關鍵字處理、AI 會話方面看看能用到生產麼。

OpenAI

http://zh.m.wikipedia.org/zh-hans/OpenAI

正文

1. 切換你的代理 IP

建議切換 韓國、日本、新加坡 畢竟節點近點。

2. 註冊 openai 賬號

http://beta.openai.com/overview

  • 如果提示你當前國家不能註冊,你把 cookie , 本地儲存都刪掉,然後切換 IP,再試試。

3. 租用手機號驗證碼

http://onlinesim.ru/v2/en/numbers

4. 準備 api key

5. 編寫 Flutter 程式碼

  • 新增 dio 包

```sh

flutter pub add dio ```

  • 常量 lib/utils/constants.dart

dart const openaiBaseUrl = "http://api.openai.com/v1"; const openaiApiKey = "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";

key 換成你自己的

  • http 請求 lib/utils/wp_http.dart

```dart import 'package:dio/dio.dart';

import 'constants.dart';

class DioHttpUtil { static final DioHttpUtil _instance = DioHttpUtil._internal(); factory DioHttpUtil() => _instance; DioHttpUtil._internal();

late Dio _dio;

/// 初始化dio Dio init() { _dio = Dio(); _dio.options = BaseOptions( baseUrl: openaiBaseUrl, connectTimeout: 10000, // 10秒 receiveTimeout: 5000, // 5秒 headers: { "Authorization": 'Bearer $openaiApiKey', }, contentType: 'application/json; charset=utf-8', responseType: ResponseType.json, ); return _dio; }

/// post請求 Future post(String url, {required Map data}) async { Response response = await _dio.post(url, data: data); return response; } } ```

  • 初始 main.dart

dart void main() { DioHttpUtil().init(); runApp(const MyApp()); }

  • 主介面 lib/pages/index.dart

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

import '../utils/wp_http.dart';

class GenIndexPage extends StatefulWidget { const GenIndexPage({super.key});

@override State createState() => _GenIndexPageState(); }

class _GenIndexPageState extends State { String choices = ""; TextEditingController promptController = TextEditingController(text: "用 dart 語言寫個 dio 的單例程式"); TextEditingController choicesController = TextEditingController();

// 語義處理 Widget buildTextGen() { return Column( children: [ // 文字輸入框 LimitedBox( maxHeight: 200, child: TextField( controller: promptController, maxLines: null, decoration: const InputDecoration( hintText: '請輸入文字', ), ), ),

    // 按鈕
    ElevatedButton(
      onPressed: () async {
        var res = await DioHttpUtil().post("/completions", data: {
          "model": "text-davinci-003",
          "prompt": promptController.text,
          "temperature": 1,
          "max_tokens": 1024,
        });
        if (res.data["choices"] != null) {
          choicesController.text = res.data["choices"][0]["text"];
        }
      },
      child: const Text("語義處理"),
    ),

    // 顯示 json 資料
    Expanded(
      child: TextField(
        controller: choicesController,
        maxLines: null,
        decoration: const InputDecoration(
          hintText: '顯示資料',
        ),
      ),
    ),
  ],
);

}

Widget buildView() { return Padding( padding: const EdgeInsets.all(8.0), child: Center( child: buildTextGen(), ), ); }

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("OpenAI 生成工具"), ), body: buildView(), ); } } ```

  • 執行

我們用 web 方式就行了。

程式碼

http://github.com/ducafecat/flutter_openai_gpt_3_generation_ducafecat

結束語

如果本文對你有幫助,請轉發讓更多的朋友閱讀。

也許這個操作只要你 3 秒鐘,對我來說是一個激勵,感謝。

祝你有一個美好的一天~


© 貓哥

  • 微信 ducafecat

  • http://wiki.ducafecat.tech

  • http://ducafecat.com