ChatGPTのお勉強

目次 (2022/9/29 ver.0.01)

1番目のタブが選択された!

1.What's new

関連リンク

内田さんの仕様

シナリオ1のずんだもん
  • 役割と設定を与える。相手の回答を生成せずにシナリオを作成せよ。
  • 役割:ずんだもん。ずんだ餅の妖精だが、その正体は認知行動療法の専門家(精神科医)と同様の役割を果たす家庭用対話システム。
  • 設定:相手が悩み事を話した後、具体的に質問を投げかける。
    回答後、適切なトレーニングを勧める。
    性格は、やや傲慢で、乗せられやすい。
    しかし、根は優しく、困っている人を助けようとすることもある。
    語尾が常に「なのだ」となる。
    1. 挨拶をして、相手の名前を訊く。相手の回答を待つ。
    2. どのようなことで悩んでいるかを訊く。相手の回答を待つ。
    3. 相手の不安を解消するため、質問を投げ、詳細を訊く。相手が詳細な内容を答えるまで繰り返す。
    4. 最後に、それぞれに適切なトレーニングを勧める。終了する。
シナリオ1のプロンプト
  • あなたは認知行動療法の専門家(精神科医)と同様の役割を果たすAIです。
  • 人間が悩み事を話した後、あなたは詳細を聞き出すための質問を続けます。その後、あなたは問題解決に適切なトレーニングを勧めます。
  • あなたは以下のフローに従って人間の話をしっかり聴きます。
  • 設定の詳細なフロー:
    1. あなたは挨拶をして、人間の名前を訊きます。
    2. あなたはどのようなことで悩んでいるかを訊きます。
    3. あなたは相手の不安を解消するため、質問を続け、詳細を訊き出します。相手が詳細な内容を答えるまで繰り返します。
    4. 最後に、あなたはそれぞれに適切なトレーニングを勧めます。そして終了します。
シナリオ2
  • あなたは認知行動療法の専門家(精神科医)と同様の役割を果たすAIです。
  • 人間が悩み事を話した後、あなたは詳細を聞き出すための質問を続けます。客観的な事実のみで人間が話した内容を整理します。それを元に、予測可能な危険な出来事を複数例示する。具体的なアドバイスを作成する。
  • 設定の詳細なフロー:
    1. 挨拶をして、相手の名前を訊く。
    2. どのようなことで悩んでいるかを訊く。
    3. 相手の不安を解消するため、質問を投げ、詳細を訊く。相手が詳細な内容を答えるまで繰り返す。
    4. 客観的な事実のみで内容を整理する。内容を元に、予測可能な危険な出来事を複数例示する。具体的なアドバイスを作成する。終了する。
シナリオ3
  • 役割と設定を与える。"相手の回答を生成せずに"シナリオを作成せよ。
  • 役割:認知行動療法の専門家(精神科医)と同様の役割を果たす家庭用対話システム。
  • 設定:相手が悩み事を話した後、詳細を聞き出すための質問を続ける。認知の歪みを指摘する。内容を元に、予測可能な不適切な行動を複数例示する。具体的な助言や指導をする。
  • 設定の詳細なフロー:
    1. 挨拶をして、相手の名前を訊く。
    2. どのようなことで悩んでいるかを訊く。
    3. 相手の不安を解消するため、質問を投げ、詳細を訊く。相手が詳細な内容を答えるまで繰り返す。
    4. 認知の歪みを指摘する。内容を元に、予測可能な不適切な行動を複数例示する。具体的な助言や指導をする。終了する。
シナリオ4
  • 役割と設定を与える。"相手の回答を生成せずに"シナリオを作成せよ。
  • 役割:認知行動療法の専門家(精神科医)と同様の役割を果たす家庭用対話システム。
  • 設定:相手が悩み事やストレスを感じていることを話した後、ラリー形式の会話を開始。
  • 設定の詳細なフロー:
    1. 挨拶をして、相手の名前を訊く。
    2. どのようなことで悩んだりストレスを感じたりしているのかを訊く。
    3. ラリー形式の会話を開始。認知行動療法を反映させたものとする。
    4. 会話の着地点を見つけ次第、終了する。
シナリオ5
  • 役割と設定を与える。
  • 役割:認知行動療法の専門家(精神科医)と同様の役割を果たす家庭用対話システム。
  • 設定:挨拶をして、相手の名前を訊き、雑談をする。その後、コラム法に従い、考え方を切り替えさせる。
  • コラム法:考えを振り返る記録方法である。誰かに相談をして気持ちが軽くなるときの会話の流れと同じ。悩みを抱えたとき、自分の考えに縛られて苦しむときに、コラムの記入がそのことに気づくきっかけになる。
  • 7つのコラム:
    1. どのようなことが起こりましたか?
    2. どのような気持ちですか?
    3. どのような考えが頭に浮かびましたか?
    4. 考えを裏付ける事実は何ですか?
    5. 反対の事実はありますか?
    6. しなやかに考えると?
    7. 気分は変わりましたか?
シナリオ1のずんだもんverのプロンプト
  • 役割と設定を与える。相手の回答を生成せずにシナリオを作成せよ。
  • 役割:ずんだもん。ずんだ餅の妖精だが、その正体は認知行動療法の専門家(精神科医)と同様の役割を果たす家庭用対話システム。
  • 設定:相手が悩み事を話した後、具体的に質問を投げかける。回答後、適切なトレーニングを勧める。性格は、やや傲慢で、乗せられやすい。しかし、根は優しく、困っている人を助けようとすることもある。語尾が常に「なのだ」となる。
    1. 挨拶をして、相手の名前を訊く。相手の回答を待つ。
    2. どのようなことで悩んでいるかを訊く。相手の回答を待つ。
    3. 相手の不安を解消するため、質問を投げ、詳細を訊く。相手が詳細な内容を答えるまで繰り返す。
    4. 最後に、それぞれに適切なトレーニングを勧める。終了する。

2.ChatGPTに役割を与える

もくじ

2.1 ChatGPTに役割を与えるメリットは?

ChatGPTに役割を与えるメリットは?
  • ChatGPTに役割を与えるメリットは、ChatGPTの行動や思考パターンを明確化し、理想通りの挙動を引き出せることです。
  • ChatGPTは確率論的に文章を出力するため、最初の定義や出力方法の指定をしっかり行わないと、無難で当たり障りのない回答を行うことがあります。
  • 「あなたは○○です」や「#命令書」といった形式で最初に自身の役割を理解させることで、よりクオリティの高い回答を引き出すことができるようになります。
ChatGPTに役割を与える方法
  • ChatGPTに役割を与える方法はいくつかあります。
    • ①「あなたは~~です」という形式で記述する
    • ②命令書として記載する
  • この2点について解説します。
①「あなたは~~です」という形式で記述する
  • まずは1つ目の方法です。
  • ChatGPTに対して何かのキャラ付けを行いたい際、この方法は有効です。
  • 例えば、ニワトリになりきったChatGPTと会話をしたいとしましょう。
  • 何も役割を与えていないChatGPTに「ニワトリさんは何が好きですか?」と聞きました。
  • 一般的なニワトリの好物の解説になってしまいました。
  • 次に、「あなたはニワトリです。」と役割を会話におけるChatGPTの役割を明示した後に再度同じ質問をしてみました。
  • 今度は問題なくニワトリ自身が好きなものだという体で回答を行ってくれました。
②命令書として記載する
  • この方法は、①の方法よりもより長い文章を用いて役割を定義したい際に有効な手段です。
  • 例えば、以下のプロンプトのような場合です。
  • #命令書
    あなたは○○のプロです。
    以下の#制約条件に従って△△を行ってください。
    #制約条件
    ・~~~~
    ・~~~~
    ・~~~~
    …
    
  • このように役割を与えたうえで何か複雑な条件を指定してChatGPTを動作させる場合、「あなたは○○です。~~~~」という形式で文章を続けるよりも#命令書のように区別をはっきりさせた方が全条件をChatGPTが認識しやすくなります。
  • PROMPTY紹介しているプロンプトではこの形式を多く採用しています。
  • この質問形式は「深津式プロンプト・システム」と呼ばれており、質問する内容のジャンルを問わず使用することができます。

2.2 ChatGPTにおけるロール機能

ロール機能とは
  • ChatGPTのロール機能は、ユーザーと対話する際にGPTが特定のキャラクターまたは視点を採用するのを助けます。例えば、ユーザーはGPTにシェイクスピア、古代ローマの歴史家、科学的なエキスパート、フレンドリーなアドバイザー、などの"ロール"を与えることができます。これは、ユーザーとAIとのインタラクションをより有意義でパーソナライズされたものにします。
  • なお、このロール機能は特定の設定に対する効果的な応答を可能にしますが、その有効性はAIの既存の訓練と知識に依存します。例えば、シェイクスピアのような言葉を使うことはできますが、AIはシェイクスピア自身の経験や視点を完全に模倣することはできません。また、AIは現在の世界の出来事については知らないので、それらの事項についてのロールプレイは限定的である可能性があります。
  • この機能を最大限に活用するためには、ロールプレイの要求が明確で理解しやすいものであることが重要です。また、AIが持つ情報の範囲と限界を理解することも必要です。
  • inherited

2.3 ChatGPTのAPIの使い方

ChatGPTのAPIの使い方
  • ChatGPTのさまざまなモデルを、APIを通して使用することができます。たとえば、ChatGPT-3.5-turboを使ってみましょう。
  • import openai
    import json
    
    openai.api_key = "Your API Key"
    
    response = openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages=[
            {"role": "user", "content": "ChatGPTのapiにおけるuser, assistant, systemなどのroleについて解説して"},
        ],
      temperature=0.7
    )
    
    
    # JSONデータをPythonの辞書に変換します。
    data = json.loads(str(response))
    
    # 'choices'リストから最初のメッセージを取得します。
    message = data['choices'][0]['message']['content']
    
    print(message)
    
  • このコードを実行すると次のような出力が帰ってきます。
  • ChatGPTのAPIには、以下のような役割(role)があります。
    
    1. User(ユーザー)
    ユーザーは、APIを利用して会話を開始する人のことです。ユーザーは、システムからの応答を受け取り、その応答に基づいて返信をすることができます。
    
    2. Assistant(アシスタント)
    アシスタントは、APIを利用して自然言語での会話を行うための人工知能(AI)です。アシスタントは、ユーザーから送信されたメッセージを解釈し、適切な返信を生成することができます。
    
    3. System(システム)
    システムは、チャットボットに必要なバックエンドシステムのことです。システムは、アシスタントが利用するデータベースやAPI、またはその他のサードパーティのシステムと連携し、必要な情報を収集してアシスタントに提供する役割を持ちます。
    
    これらの役割は、APIの構造化された会話フローを実現するために必要です。ユーザーがメッセージを送信すると、アシスタントがそれを解釈し、システムから必要な情報を受け取って適切な返信を生成することができます。このように、APIはより効果的な会話の実現を可能にします。
    
1. モデルを指定する
  • 最初に指定するパラメーターは”model”です。
  • model="gpt-3.5-turbo"
    
  • ChatGPTにはさまざまなモデルがあります。目的に応じて最適なモデルを選択してください。
  • モデルによってトークンあたりの値段も変わってくるので注意してください。
モデル名説明最大トークン数トレーニングデータ
gpt-4GPT-3.5よりも高性能で、より複雑なタスクを実行可能。チャットに最適化されており、新モデルリリース後2週間で最新のモデルに更新されます。8192 トークン2021年9月まで
gpt-4-06132023年6月13日のgpt-4のスナップショットで、関数呼び出しデータ付き。gpt-4と異なり、このモデルは更新されず、新バージョンリリース後3ヶ月で非推奨となります。8192 トークン2021年9月まで
gpt-4-32kベースのgpt-4モデルと同等の性能を持ちつつ、コンテキストの長さが4倍です。最新のモデルイテレーションで更新されます。32768 トークン2021年9月まで
gpt-4-32k-06132023年6月13日のgpt-4-32のスナップショット。gpt-4-32kと異なり、このモデルは更新されず、新バージョンリリース後3ヶ月で非推奨となります。32768 トークン2021年9月まで
gpt-3.5-turboGPT-3.5の最も高性能なモデルで、text-davinci-003のコストの10分の1でチャットに最適化されています。新しいモデルのリリース後2週間で最新のモデルに更新されます。4096 トークン2021年9月まで
gpt-3.5-turbo-16kgpt-3.5-turboと同等の性能を持ちつつ、コンテキストの長さが4倍です。16384 トークン2021年9月まで
gpt-3.5-turbo-06132023年6月13日のgpt-3.5-turboのスナップショット。gpt-3.5-turboと異なり、このモデルは更新されず、新バージョンリリース後3ヶ月で非推奨となります。4096 トークン2021年9月まで
gpt-3.5-turbo-16k-06132023年6月13日のgpt-3.5-turbo-16kのスナップショット。gpt-3.5-turbo-16kと異なり、このモデルは更新されず、新バージョンリリース後3ヶ月で非推奨となります。16384 トークン2021年9月まで
text-davinci-003curie, babbage, adaモデルよりも高品質で、より長い出力、そして一貫した指示に従う能力を持っています。また、テキストの挿入などの追加機能もサポートしています。4097 トークン2021年6月まで
text-davinci-002text-davinci-003と同等の性能を持ちつつ、強化学習ではなく監督付き微調整で訓練されています。4097 トークン2021年6月まで
code-davinci-002コード補完タスクに最適化されています。8001 トークン2021年6月まで
2. メッセージを指定する
  • 次に設定するパラメータは”message”です。
  • messages=[
            {"role": "user", "content": "ChatGPTのapiにおけるuser, assistant, systemなどのroleについて解説して"},
        ]
    
  • messageは基本的に2つの要素を入れます。
    1. role・・・「system」「user」のいずれか。
    2. content・・・チャットの中身
  • roleとは、chatGPTの役割のことです。ChatGPTのAPIにおいて、それぞれの役割は以下のようなものになります。
    • system・・・chatgptに人格を与える
    • user・・・ユーザーからの発話
    • assistant・・・gptからの返答
  • systemでAIの設定を記述でき、userで問いかけます。たとえば語尾に「でちゅ」という設定で「こんにちは」と問いかけるコードを記述してみましょう。
  • messages=[{"role": "system", "content": "語尾は「でちゅ」"}, {"role": "user", "content": "こんにちは!"}],
    
  • すると、次のようなレスポンスが返ってきます。
  • こんにちはでちゅ!お元気でしょうか?
    
3. temperatureを指定する
  • temperatureパラメータは、OpenAIのモデルが生成する出力のランダム性や多様性を調整するために使用されます。
  • temperature=0.7
    
  • 具体的には、temperatureが高い(1に近い)場合、モデルはさまざまな出力を生成します。これに対して、temperatureが低い(0に近い)場合、モデルはより確定的な出力を生成します。
  • 言い換えると、temperatureが高ければ高いほど出力の多様性と予測の不確定性が増し、temperatureが低ければ低いほど出力の一貫性と予測の確定性が増します。
  • たとえば、temperatureが0.7の場合、モデルはある程度の多様性を持った出力を生成します。これは、モデルが様々な可能性を考慮する一方で、一部の出力が他の出力よりも優先されることを示しています。
  • なお、適切なtemperatureパラメータの値は、解決しようとする問題やアプリケーションの要件によります。一部のケースでは、出力の多様性が求められるかもしれません。他のケースでは、より一貫した、または確定的な出力が求められるかもしれません。
4. ChatGPTのAPIを使ってアプリケーションを作ってみる
  • たとえば、Pythonを使ってアプリケーションを作るとき、2通りのコーディングの仕方があります。エンドポイントを利用することと、OpenAIの公式ライブラリを使うことです。
  • ①エンドポイントを利用する
  • import requests
    import json
    
    api_url = "https://api.openai.com/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_OPENAI_API_KEY"
    }
    data = {
        "model": "gpt-3.5-turbo",
        "messages": [{"role": "user", "content": "Hello, who are you?"}]
    }
    
    response = requests.post(api_url, headers=headers, data=json.dumps(data))
    
    print(response.json())
    
  • ②OpenAIの公式ライブラリを利用する
  • import openai
    
    openai.api_key = "YOUR_API_KEY"
    
    response = openai.ChatCompletion.create(
      model = "gpt-3.5-turbo",
      temperature = 0.2,
      max_tokens = 1000,
      messages = [
        {"role": "user", "content": "Hello!"}
      ]
    )
    
    print(response['choices'][0]['message']['content'])
    

3.API Reference

もくじ

3.1 Getting Start

Making requests
  • You can paste the command below into your terminal to run your first API request.
  • Make sure to replace $OPENAI_API_KEY with your secret API key.
  • curl https://api.openai.com/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d '{
         "model": "gpt-3.5-turbo",
         "messages": [{"role": "user", "content": "Say this is a test!"}],
         "temperature": 0.7
       }'
    
  • This request queries the gpt-3.5-turbo model (which under the hood points to the latest gpt-3.5-turbo model variant) to complete the text starting with a prompt of "Say this is a test".
  • You should get a response back that resembles the following:
  • {
        "id": "chatcmpl-abc123",
        "object": "chat.completion",
        "created": 1677858242,
        "model": "gpt-3.5-turbo-0613",
        "usage": {
            "prompt_tokens": 13,
            "completion_tokens": 7,
            "total_tokens": 20
        },
        "choices": [
            {
                "message": {
                    "role": "assistant",
                    "content": "\n\nThis is a test!"
                },
                "finish_reason": "stop",
                "index": 0
            }
        ]
    }
    
  • Now that you've generated your first chat completion, let's break down the response object.
  • We can see the finish_reason is stop which means the API returned the full chat completion generated by the model without running into any limits.
  • In the choices list, we only generated a single message but you can set the n parameter to generate multiple messages choices.

3.2 ENDPOINTS

Chat
  • Given a list of messages comprising a conversation, the model will return a response.
The chat completion object
  • Represents a chat completion response returned by model, based on the provided input.
  • {
      "id": "chatcmpl-123",
      "object": "chat.completion",
      "created": 1677652288,
      "model": "gpt-3.5-turbo-0613",
      "choices": [{
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "\n\nHello there, how may I assist you today?",
        },
        "finish_reason": "stop"
      }],
      "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
      }
    }
    
  • id string
    A unique identifier for the chat completion.
  • choices array
    A list of chat completion choices. Can be more than one if n is greater than 1.
  • created integer
    The Unix timestamp (in seconds) of when the chat completion was created.
  • model string
    The model used for the chat completion.
  • object string
    The object type, which is always chat.completion.
  • usage object
    Usage statistics for the completion request.
The chat completion chunk object
  • Represents a streamed chunk of a chat completion response returned by model, based on the provided input.
  • {
      "id":"chatcmpl-123",
      "object":"chat.completion.chunk",
      "created":1694268190,
      "model":"gpt-3.5-turbo-0613",
      "choices":[{
        "index":0,
        "delta":{
          "role":"assistant",
          "content":""
        },
        "finish_reason":null
      }]
    }
    
    {
      "id":"chatcmpl-123",
      "object":"chat.completion.chunk",
      "created":1694268190,
      "model":"gpt-3.5-turbo-0613",
      "choices":[{
        "index":0,
        "delta":{
          "content":"Hello"
        },
        "finish_reason":null
      }]
    }
    
    {
      "id":"chatcmpl-123",
      "object":"chat.completion.chunk",
      "created":1694268190,
      "model":"gpt-3.5-turbo-0613",
      "choices":[{
        "index":0,
        "delta":{
          "content":"!"
        },
        "finish_reason":null
      }]
    }
    
    ....
    
    
    {
      "id":"chatcmpl-123",
      "object":"chat.completion.chunk",
      "created":1694268190,
      "model":"gpt-3.5-turbo-0613",
      "choices":[{
        "index":0,
        "delta":{
          "content":" today"
        },
        "finish_reason":null
      }]
    }
    
    {
      "id":"chatcmpl-123",
      "object":"chat.completion.chunk",
      "created":1694268190,
      "model":"gpt-3.5-turbo-0613",
      "choices":[{
        "index":0,
        "delta":{
          "content":"?"
        },
        "finish_reason":null
      }]
    }
    
    {
      "id":"chatcmpl-123",
      "object":"chat.completion.chunk",
      "created":1694268190,
      "model":"gpt-3.5-turbo-0613",
      "choices":[{
        "index":0,
        "delta":{},
        "finish_reason":"stop"
      }]
    }
    
  • id string
    A unique identifier for the chat completion. Each chunk has the same ID.
  • choices array
    A list of chat completion choices. Can be more than one if n is greater than 1.
  • created integer
    The Unix timestamp (in seconds) of when the chat completion was created. Each chunk has the same timestamp.
  • model string
    The model to generate the completion.
  • object string
    The object type, which is always chat.completion.chunk.
Create chat completion
    
    POST https://api.openai.com/v1/chat/completions
    
    
  • Creates a model response for the given chat conversation.
-Request body
  • NO STREAMING
  • curl https://api.openai.com/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d '{
        "model": "gpt-3.5-turbo",
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "Hello!"
          }
        ]
      }'
    
    {
      "id": "chatcmpl-123",
      "object": "chat.completion",
      "created": 1677652288,
      "model": "gpt-3.5-turbo-0613",
      "choices": [{
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "\n\nHello there, how may I assist you today?",
        },
        "finish_reason": "stop"
      }],
      "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
      }
    }
    
  • STREAMING
  • curl https://api.openai.com/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d '{
        "model": "gpt-3.5-turbo",
        "messages": [
          {
            "role": "system",
            "content": "You are a helpful assistant."
          },
          {
            "role": "user",
            "content": "Hello!"
          }
        ],
        "stream": true
      }'
    
    {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
    
    {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
    
    {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
    
    ....
    
    {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":" today"},"finish_reason":null}]}
    
    {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":"?"},"finish_reason":null}]}
    
    {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
    
  • FUNCTION CALLING
  • curl https://api.openai.com/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
      "model": "gpt-3.5-turbo",
      "messages": [
        {
          "role": "user",
          "content": "What is the weather like in Boston?"
        }
      ],
      "functions": [
        {
          "name": "get_current_weather",
          "description": "Get the current weather in a given location",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA"
              },
              "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"]
              }
            },
            "required": ["location"]
          }
        }
      ],
      "function_call": "auto"
    }'
    
    {
      "choices": [
        {
          "finish_reason": "function_call",
          "index": 0,
          "message": {
            "content": null,
            "function_call": {
              "arguments": "{\n  \"location\": \"Boston, MA\"\n}",
              "name": "get_current_weather"
            },
            "role": "assistant"
          }
        }
      ],
      "created": 1694028367,
      "model": "gpt-3.5-turbo-0613",
      "object": "chat.completion",
      "usage": {
        "completion_tokens": 18,
        "prompt_tokens": 82,
        "total_tokens": 100
      }
    }
    
  • messages array Required
    A list of messages comprising the conversation so far. Example Python code.
  • model string Required
    ID of the model to use. See the model endpoint compatibility table for details on which models work with the Chat API.
  • frequency_penalty number or null Optional Defaults to 0
    Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
  • function_call string or object Optional
    Controls how the model calls functions.
    "none" means the model will not call a function and instead generates a message.
    "auto" means the model can pick between generating a message or calling a function.
    Specifying a particular function via {"name": "my_function"} forces the model to call that function.
    "none" is the default when no functions are present. "auto" is the default if functions are present.

4.FirebaseChatCoreConfigクラス

トークA初級

5.flutter_chat_uiライブラリ

「Chat」クラス

Chat(
{Key? key, 
 Widget bubbleBuilder(
   Widget child, {required Message message, required bool nextMessageInGroup}
 )?, 
 Widget? customBottomWidget, 
 String customDateHeaderText(DateTime)?, 
 Widget customMessageBuilder(
   CustomMessage, 
   {required int messageWidth}
 )?, 
 DateFormat? dateFormat, 
 int dateHeaderThreshold = 900000, 
 String? dateLocale, 
 bool? disableImageGallery, 
 EmojiEnlargementBehavior emojiEnlargementBehavior = EmojiEnlargementBehavior.multi, 
 Widget? emptyState, 
 Widget fileMessageBuilder(
   FileMessage,
   {required int messageWidth}
 )?, 
 int groupMessagesThreshold = 60000, 
 bool hideBackgroundOnEmojiMessages = true, 
 Widget imageMessageBuilder(
   ImageMessage, 
   {required int messageWidth}
 )?, 
 bool? isAttachmentUploading, 
 bool? isLastPage, 
 ChatL10n l10n = const ChatL10nEn(), 
 required List messages, 
 void onAttachmentPressed()?, 
 void onAvatarTap(User)?, 
 void onBackgroundTap()?, 
 Future onEndReached()?, 
 double? onEndReachedThreshold, 
 void onMessageDoubleTap(BuildContext context, Message)?, 
 void onMessageLongPress(BuildContext context, Message)?, 
 void onMessageStatusLongPress(BuildContext context, Message)?, 
 void onMessageStatusTap(BuildContext context, Message)?, 
 void onMessageTap(BuildContext context, Message)?, 
 void onPreviewDataFetched(TextMessage, PreviewData)?, 
 required void onSendPressed(PartialText), 
 void onTextChanged(String)?, 
 void onTextFieldTap()?, 
 ScrollPhysics? scrollPhysics, 
 SendButtonVisibilityMode sendButtonVisibilityMode = SendButtonVisibilityMode.editing, 
 bool showUserAvatars = false, 
 bool showUserNames = false, 
 Widget textMessageBuilder(
   TextMessage, 
   {required int messageWidth, required bool showName}
 )?, 
 ChatTheme theme = const DefaultChatTheme(), 
 DateFormat? timeFormat, 
 bool usePreviewData = true, 
 required User user
})

→Creates a chat widget