🚀

ChatGPTの可能・不可能を探ってみる

2023/03/20に公開

追記.
https://github.com/dair-ai/Prompt-Engineering-Guide
にガイドラインが用意されているので、ガイドライン見ると良さそう。


ChatGPTの活用方法を模索するため、可能・不可能なことを探ってみようと思います。

GoとChatGPTを使ってCLIの雑談相手を作ってみた で作った「chatty」を使っていきます。

少しずつ探った結果をこの記事に反映していくことにします。

可能

  • コード生成
  • 性格診断
  • 英文添削
  • 文章添削

コード生成

特定の具体的な目的を満たすようなコード生成に活用できそう。ただし、生成されたコードが受け入れ可能であるかどうかのチェックは必要な感じ。

目的やどういうアウトプットが望ましいかを理解している人がChatGPTを利用すると、役に立てられそう。

予め前提条件を指定しておくことで、求めるコードのアウトプットに早く近づけそう。

❯ chatty GitHubにissueを作成するコードをGo言語で書くことは可能ですか。
はい、Go言語でGitHubのAPIを使ってIssueを作成するコードを書くことができます。以下は、GitHubのAPIをGo言語で実行して、Issueを作成するための基本的なサンプルコードです。
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

const (
    baseUrl   = "https://api.github.com"
    owner     = "example-owner" //リポジトリの所有者名を記入します。
    repo      = "example-repo" //リポジトリ名を記入します。
    authToken = "YOUR_GITHUB_API_TOKEN" //当該アカウントのGitHub APIトークンを記入します。
)

type Issue struct {
    Title       string `json:"title"`
    Description string `json:"body"`
}

func main() {
    issue := Issue{
        Title:       "New Issue Title",
        Description: "This is the description for the new issue.",
    }

    // Create a client and a new HTTP request
    client := &http.Client{}
    req, err := http.NewRequest("POST", baseUrl+"/repos/"+owner+"/"+repo+"/issues", nil)

    // Add authorization token to request header
    req.Header.Add("Authorization", "token "+authToken)

    // Convert issue object to JSON structure
    requestBody, err := json.Marshal(issue)
    if err != nil {
        panic(err)
    }

    // Set the request body and header type
    req.Body = bytes.NewBuffer(requestBody)
    req.Header.Add("Content-Type", "application/json")

    // Send the HTTP request and handle the response
    response, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()

    if response.StatusCode == 201 {
        fmt.Println("Issue successfully created!")
    } else {
        fmt.Printf("Failed to create issue. Response Status: %s\n", response.Status)
    }
}
このコードは、GitHub APIを使用して、指定した所有者のリポジトリに新しいIssueを作成する方法を示しています。リポジトリの所有者名、リポジトリ名、およびAPIトークンを設定する必要があります。また、上記のコードで示されているように、HTTPクライアントと新しいHTTPリクエストを作成して、アクセストークンをリクエストヘッダーに追加し、Issueのタイトルと説明をJSONに変換し、HTTPリクエストに設定する必要があります。何かわからないことがあれば、自由に聞いてください。

性格診断

それっぽい感じではある。

与えられた情報を整理するのが得意なのかもしれない。

ある条件を渡して、ある情報を渡した時に、条件に合致する情報を抽出する。そんな使い方をすると便利かもしれない。
金額感と食べたい料理の情報を断片的に渡してレストランを提示してもらうとか。

❯ chatty これからいくつか私に関する情報をあなたにお渡しします。それらの情報を元にして私の性格診断をすることは可能です か。
はい、おっしゃる通りです。ご自身についての情報を私に提供いただければ、性格診断を行うことができます。どのようなことをお知らせいただけますか?

❯ chatty 以下が私に関する情報です。\
… ❯ 私は運動が好きです。また、読書も好きです。人と話をするのが好きです。料理は得意ではありませんが、いろんな料理を食べ
るのは好きです。\
… ❯ 嫌なことは嫌といいます。自転車に乗るのが好きで、車も好きです。散歩することも好きです。
ありがとうございます。あなたの情報から、以下の性格特性が見受けられます。

- 活動的:運動や自転車、散歩など、身体を動かすことが好きなため、比較的活発な性格がある可能性があります。
- 社交的:人と話をすることが好きなため、社交的な性格がある可能性があります。
- 食文化に興味がある:いろいろな食文化を楽しむことが好きなため、開放的な性格がある可能性があります。
- 率直:嫌なことは嫌と言い切るような性格がある可能性があります。

これらの特性に基づいて、あなたは活発で社交的、自己表現が率直なタイプの人物かもしれません。ただし、これはあくまでも一般的な傾向であり、あなた自身が最終的に自分自身の性格を決定することができます。

英文添削

気軽に英文添削してもらうには便利な感じ。

❯ chatty これから英語の文章を添削していただきたいのですが、可能ですか。


はい、可能です。お送りください。

❯ chatty My name are chatty.
"My name are chatty" should be corrected to "My name is Chatty."

❯ chatty 添削する際は具体的に説明していただけると助かります。
はい、添削する際には具体的に説明いたします。

例えば今回の「My name are chatty.」の場合、「name」は単数形であるため、「is」を使用します。また、自分自身を表す場合には「My name is」という表現が適切です。

ですので、「My name are chatty.」を正しく書くと「My name is Chatty.」となります。

文章添削

言語間の変換ではなく、同じ言語内での文章表現を添削してもらう感じ。

言い回しを調整したい場合に使えそう。

❯ chatty 私がこれから書く文章を添削していただけますか。


はい、お書き下さい。

❯ chatty ChatGPTの活用方法を模索するため、可能・不可能なことを探ってみようと思います。
以下のように修正することができます。

「ChatGPTを活用するために、何が可能で何が不可能なのかを探ってみたいと思います。」

不可能

  • WEBスクレイピング

WEBスクレイピング

与えられた情報を元にして、処理してアウトプットすることは可能だが、情報を自分から取得しに行くことはできない感じ。

❯ chatty https://zenn.dev/hirokisan/articles/7af276a9a3bf74 にアクセスして、本文を取得して私に教えてください。
申し訳ありませんが、私はWebスクレイピングを行うことはできません。データ取得に特化したAPIや外部サービスを使用することで、Webサイトからデータを収集することができます。ただし、スクレイピングはサイトの利用規約に違反する可能性があるため、適切な許可や条件を確認した上で行うことが重要です。

指定されたURLにアクセスして、データ取得に関する問題がある場合は、Webサイトのオーナーや運営元に直接問い合わせることをお勧めします。彼らは適切な許可なしでWebサイトからデータを取得することを許可していない場合があるため、彼らからの許可を得る必要があるかもしれません。

Discussion