Flutter 中使用 OpenAI GPT-3 進行語義化處理
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
- 初始 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
class _GenIndexPageState extends State
// 語義處理 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
- Flutter 中使用 OpenAI GPT-3 進行語義化處理
- Flutter 構建設計系統
- Flutter ー Authentication 認證
- Flutter 離線資料方案 Flutter_Data 包
- 基於 Hive 的 Flutter 文件型別儲存
- Flutter AlarmManager = ⏰
- Flutter 8 個優秀動畫 Packages
- Flutter 建立自己的對話方塊,不使用任何包!
- 在 Flutter App 中編寫自定義平臺特定程式碼[Method Channel]
- Flutter 最有用的 5 個優秀的依賴包
- Neumorphism 元件 ーー Dart extension 擴充套件
- 用抽象工廠方法構建 Flutter 主題
- Dart 語言的7個很酷的特點
- 17 個提高效能的 Flutter 最佳實踐
- Flutter 應用程式建立一個擴充套件面板列表
- 在 Flutter 使用 GetX 對話方塊
- flutter 互動式使用者指導,以及如何在佈局中創造一個洞
- Flutter開源專案 - appFlowy 真的是 Notion 的替代品? 一週暴漲 star 9k 多!
- 桌面 Flutter 應用程式
- Flutter 2020 開源專案推薦 第一彈