【個人開発】OpenAIの文章生成モデルを使ったアプリを24時間で作ってリリースしました

こんにちは、imajoです！
今話題のChatGPTのAPI(GPT-3)を使ったスマホアプリを24時間で爆誕させました！
**「簡単な技術とアイディア1つで無限の可能性が広がっている」**
そんな可能性を感じました。
一応リリースしたので、この記事の最後にリンク貼っておきます。



# 何を作ったの?

インスタグラムのハッシュタグをAIが考えてくれるアプリです!
機能自体がすごくシンプルなので実装は少ないです。
ただ、当たり前ですが、AIの部分を自分で実装していたら一生かかっても作れないアプリでした。
1つのAPIを叩くだけでこの機能を作れたことに感動しました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195882/9b27c933-7aa5-8a37-2be1-1e60733f4880.jpeg" width="300"/>

# ChatGPTと日常の些細な課題

(実は?)料理にハマっていて、作ってインスタに投稿していました。
ただインスタ初心者すぎて、ハッシュタグを作るところで挫折しそうです。
このシンプルな課題をChatGPTを使って解決しようと考えました。

ChatGPTは流石に100点満点の回答はしてくれません。
それでも最低限満足するくらいの回答はもらえるので、**そんな感じの軽い課題感を日常に持っていたらChatGPTを使うチャンスです！**

# 使ったAPIについて

正確にいうとChatGPTのAPIが存在するわけではなく、`text-davinci-003`というモデルをOpenAIから利用できるらしいです。
ミーハーなので詳しいことは分からんのですが、要は **ChatGPTに似たAPIを使える！** ということです。

API使うための準備も使い方も簡単なのでサクッと紹介します！

# 準備(5分)

1. まずはAPI keyを発行します。そのためにも https://openai.com/api/ のサインアップから登録します。
2. その後、 https://beta.openai.com/account/api-keys からAPI keyを発行します

# 実装

今回はdartで書きますが、APIを叩いてるだけなので特別なことはしていません。
指定した文言を入力して返事をprintするコードです。

```dart
main() async {
  final API_KEY = "取得したAPI key";
  final message = "こんにちは！";
  final response = await Dio().post(
    "https://api.openai.com/v1/completions",
    data: {
      "model": "text-davinci-003",
      "prompt": message,
      "temperature": 1.0,
      "max_tokens": 1000,
      "top_p": 1,
      "frequency_penalty": 0.0,
      "presence_penalty": 0.6,
      "stop": [" Human:", " AI:"]
    },
    options: Options(
      headers: {
        "Authorization":
            "Bearer ${API_KEY}"
      },
    ),
  );

  print(response.data["choices"][0]["text"]);
}

```

複数回の会話を成立させるには会話のログを送る必要があるのですが、
今回は1回のやりとりで十分だったため、返事をprintして終わりです。
見てわかる通り、普通にAPI叩いてるだけです。

リリースしたアプリ自体も１ファイルにまとめちゃったので合計300行くらいしかないです笑
(もちろんこれからリファクタしますよ)

# API使うのにお金発生しますが...

まず第一に問題なのはお金が発生します。
ただ安心してください(?)
なんと最初の**3ヶ月は18$分が無料で使えます。**(正確にはクレジットが付与される)
個人開発でちょろっと試すには十分な金額だと思います。

1つのアプリをサクッと作った程度だとこれくらいです。

![スクリーンショット 2022-12-24 15.08.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195882/867c6065-c2f6-d2bf-0560-a6f367858023.png)

# リリースします、ごめんなさい

せっかく作ってみたのでApp storeにリリースしました！

...がその前に謝らせてください。

なぜかというと、有料にしたからです...(でも設定である中で1番安い金額です)
３ヶ月後に自腹を切らないといけないので、ドリンク一本買う気持ちでお金を恵んでもらえると嬉しいです🙇🥲💰

App storeへのリンクはこちらです！

https://apps.apple.com/us/app/generator-by-ai/id1660903470



# 金払っちまったけど、納得いかない方へ

ChatGPTとは話題が変わってしまいますが、ちゃんと時間をかけて作っている個人開発のプロダクトもあります。
GitHubを使っている方限定になりますが、**Issueをサイドバーで開ける**Chrome拡張です。
ありがたいことに多くのユーザーに使っていただいてます。

こちらも将来的にお金取る予定ですが、**今まだ課金実装されていません！**
今のうちによかったら😊
(課金の導線がありますが、0円プランです)

https://chrome.google.com/webstore/detail/mokuren-for-github/nikennffbfoadbajdgnhlngjahofhdef

# 参考

こんなにも新しい技術なのに、既に記事がたくさんあることに驚きました。
また、そう言った方がいるおかげで自分のようななんちゃってエンジニアでも作れたと思います。
そんな中でも特に参考にさせていただいた記事です。本当にありがとうございました。

[ChatGPTで用いられるGPT-3.5系のモデルをAPIから利用してみた](https://qiita.com/kaz2ngt/items/d26dd572bd82fcd3dfd3)
[ChatGPTによるプログラム生成の可能性と限界（前編）](https://qiita.com/autotaker1984/items/5b5ac8c01d11fbbbc4a7)
[ChatGPTをFlutterで使う方法をChatGPTに聞いた結果](https://zenn.dev/kboy/articles/efae4bf6d457e1)

# 最後に

今回に限らず、新しい技術をキャッチアップしながら世の中にプロダクトを発信してきたいと思っています。
Twitterでも活動してるのでよかったらフォローしてみてください！

最後までありがとうございました。

https://twitter.com/imasirooo