ChatGPT APIを使って自分のアプリを強化してみた

2022年3月、ついにChatGPT APIが公開されました。使い方は公式のドキュメントがわかりやすいですし、基礎的な情報は他の人も記事にされると思います。そこで今回はこれらは簡単な説明にとどめ、自分のアプリに応用した事例とそこからの考察を紹介したいと思います。

# どんな事ができるのか

基本的には「質問を送信すると回答を送信する」という単純な構造になっています。もちろん他にもトークン使用量などの情報が含まれていますが表示するのは回答部分の文字列になるかと思います。

公式のサンプルから引用すると、Pythonでは以下のようなコードでリクエストが可能です。

```Python

import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

```

`system`は基礎的な設定です。あまり使う必要なないかもしれませんが「専門用語を避けて説明してください」などとあらかじめ指定するといった使い方もできるでしょう。

上のように`user`と`assistant`による会話の例を示しておくこともできます。またこれを文脈として利用することで、人間の記憶のような働きをさせることもできるそうです。ただし処理できるトークンの量には注意してください。

# 活用事例

## 導入するアプリ

今回扱うのは私が作成したチャットAIアプリです。ユーザーはキャラクターや歴史上の人物を再現して自分だけの人工知能を作る事が可能です。また、それと会話したり共有したりする事ができるといったものです。iOSアプリとしてApp Storeに公開しています。

[![ChatGPT APIを使って自分のアプリを強化してみた-1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/ac4c0c2f-c680-2596-e336-63d71584ebb8.jpeg)](https://apps.apple.com/jp/app/eveki-%E3%83%81%E3%83%A3%E3%83%83%E3%83%88ai%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86/id6444040191?itsct=apps_box_link&itscg=30200)




現在使っている言語モデルは自作したものであり、低コストで使える分、コードを書いたりするような性能はまだありません。そこで先ほどのAPIを使って、対話の質を向上させて性能を高めていきます。

## 回答の比較

従来のAIとChatGPT APIに同じキャラクター設定で同じ質問をしてみました。キャラクターは「お嬢様」で質問は「フランス革命について教えて」としてみます。

従来のもののは以下のようになりました。少し短めに返答するよう設定しているとはいえ、頼りない結果です。生みの親としてはもうちょっと頑張ってほしい。

![LINE_capture_699423848.825751.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/872fd6d4-1b80-f7f1-5249-2ba19c050c6e.jpeg)



ChatGPT APIを使った際の回答は以下の通りです。しっかりと口調もそれらしいものになっており質問にも答えています。

![note　ノート　記事見出し画像　アイキャッチ-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/30e8ecbd-d7f5-4596-948c-74cdbd4da73e.png)

## ChatGPT独自のポイント

非常に性能の高いChatGPTですが、返答内容の正確さを求めるせいかキャラクター設定が薄くなってしまう事がありました。API利用の場合は途中の軌道修正が難しいため、文脈などにはかなり気を配る必要があるでしょう。

逆に設定をうまく反映させる事ができればその知識量と組み合わせて上手い答えを出すこともできます。以下はローマ皇帝ネロ・クラウディウスとして「フランス革命について」聞いた例です。

> フランス革命とは、18世紀末から19世紀初頭にかけて、フランスで起こった社会・政治的な変革運動である。この革命は、フランス王国の専制的な統治体制に対する反乱として始まり、最終的には近代民主主義の成立につながった歴史的な出来事である。
>
> （中略）
>
> 私としては、このような混乱を招いたフランス革命は、暴力や混乱をもたらす過激な手段を用いることは決して許されないことを示していると考える。芸術を愛する者として、私は常に平和と秩序を重んじ、人々が文化と芸術を楽しめる社会を目指すことを望む。

ついでに「ポケモンについて」も聞いてみました。

> ポケモンとは、日本の任天堂が開発したロールプレイングゲームのシリーズであり、またアニメやトレーディングカードゲームなどのメディアミックス作品でもある。
> 
> ポケモンは、架空の生き物であるポケットモンスターを集め、トレーナーとして育成・戦闘させることを主な目的としている。ポケモンには、数多くの種類が存在し、それぞれに独自の特徴や能力が備わっている。
> 
> （中略）
> 
> 私としては、芸術や文化と同様に、ポケモンのような娯楽も人々にとって重要なものであると考えている。人々が楽しめる娯楽は、ストレスを軽減し、生活の質を向上させる効果があると思われる。また、ポケモンのような作品は、人々の想像力を刺激し、創造性を育成することにも繋がると思われる。


内容の是非はともかく、人々を統治する立場からのコメントも生成されています。またネロは芸術愛好家だった、という設定も上手に解説に落とし込んでいる好例だと言えます。

何度か試したところ、返答内容の比重としては、質問の答えが7割、キャラクターとしての個人的な意見が3割と言った印象でした。上の例のように最後に少し意見を述べる程度です。Evekiの方針としてはもっと個性を出してくれても構わないので、この辺りは調整の余地があるかもしれません。


# まとめ

## 機能面での展望

文脈の設定が可能なのでかなり活用法は広いかと思います。公式のドキュメントもわかりやすく、またこれから情報が増えていくことも期待できます。技術面では非常に手軽で扱いやすいものになっていくと思います。

ただしユーザーとしては従来のようにChatGPTの公式ページから直接利用する、という選択肢も残されています。元々ChatGPTの強みは何でも答えられる柔軟さですから、わざわざAPIを通して特化した使い方をするにはそれ相応の理由が必要です。ここの差別化がなければサービスとしての成立は難しいかもしれません。

## 料金などの検討

やはり気になるのは料金です。ChatGPT APIはトークンによる従量課金制です。正確ではありませんが、おおよそ生成された文章の長さに比例するといってもよいかもしれません。

個人レベルならともかく、正式なサービスとして運用し利用者が増えれば無視できない部分です。使用料を賄えるような収益化のしくみは用意しておく必要があるでしょう。

## さいごに

個人的には思っていたよりシンプルな使い方ができて嬉しい限りです。思いもよらない活用法が出てくるかもしれないという期待もあります。個人的に使うだけなら無料の範囲でも色々と試せるのでぜひ一度試してみてください。

---


- [🤖開発アプリ:Eveki](https://apps.apple.com/jp/app/eveki-%E3%83%81%E3%83%A3%E3%83%83%E3%83%88ai%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86/id6444040191?itsct=apps_box_link&itscg=30200)
- [🐦Twitter:@dev_eveki](https://twitter.com/dev_eveki)
- [📗note: izumo092](https://note.com/izumo092)