Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPTの新機能「Function Calling」をPostmanで使ってみる

ChatGPTの新機能「Function Calling」をPostmanで使ってみる

6月13日にOpenAIが発表したChatGPT APIの新機能「Function Calling」を、Postmanを使って試してみました。ChatGPTの新機能と、Postmanの基本的な使い方の流れの両方を掴んでいただくことができます。Postman Tokyo Meetup 2023.7での発表資料です。

草薙昭彦

July 04, 2023
Tweet

More Decks by 草薙昭彦

Other Decks in Technology

Transcript

  1. All rights reserved by Postman Inc
    ChatGPT の新機能
    「Function Calling」を
    Postman で使ってみる
    草薙 昭彦
    テクノロジーエバンジェリスト
    #PostmanMeetup

    View full-size slide

  2. テクノロジーエバンジェリスト
    Postman 株式会社
    草薙 昭彦
    @nagix
    @postman_japan

    View full-size slide

  3. 6/13 発表の ChatGPT の新機能「Function Calling」
    https://openai.com/blog/function-calling-and-other-api-updates
    @postman_japan

    View full-size slide

  4. ChatGPT
    Open AI
    1
    2
    サービス
    利用者
    @postman_japan

    View full-size slide

  5. Function Calling
    プログラム Open AI
    Function 1
    Function 2
    Function 3
    1
    2
    3
    4
    5
    サービス
    利用者
    Chat Completions API
    @postman_japan

    View full-size slide

  6. これまでの ChatGPT の外部連携との違い
    応答のブレの少なさ → 正確性の向上
    @postman_japan

    View full-size slide

  7. 準備
    @postman_japan

    View full-size slide

  8. 準備
    ChatGPT API キーの取得
    https://qiita.com/kotattsu3/items/b936a65d173a5d39dad0
    @postman_japan
    Postman のインストール
    https://qiita.com/ponsuke0531/items/03483449ea0df505a540

    View full-size slide

  9. Postman API ネットワーク
    @postman_japan

    View full-size slide

  10. コレクションを自分のワークスペースにフォーク
    @postman_japan

    View full-size slide

  11. Environment を作って API キーを設定
    @postman_japan

    View full-size slide

  12. OpenAI のサンプルを
    そのまま試してみる
    @postman_japan

    View full-size slide

  13. Chat Completions API
    @postman_japan
    [
    {"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?"}
    ]
    このような状況設定と一連の会話の流れを与えてやれば・・・
    空気を読んで回答を返してくれる
    {
    "content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
    "role": "assistant"
    }

    View full-size slide

  14. Chat Completions API
    @postman_japan

    View full-size slide

  15. リクエスト
    @postman_japan
    {
    "model": "gpt-3.5-turbo-0613",
    "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"]
    }
    }
    ]
    }

    View full-size slide

  16. レスポンス
    @postman_japan
    {
    "id": "chatcmpl-7RMEfHarZvZ7DsTkhioDG6dPyJ4PE",
    ...
    "choices": [
    {
    "index": 0,
    "message": {
    "role": "assistant",
    "content": null,
    "function_call": {
    "name": "get_current_weather",
    "arguments": "{\n \"location\": \"Boston, MA\"\n}"
    }
    },
    "finish_reason": "function_call"
    }
    ],
    ...
    }

    View full-size slide

  17. ここでお天気 Function を呼ぶ
    @postman_japan

    View full-size slide

  18. リクエスト
    @postman_japan
    {
    "model": "gpt-3.5-turbo-0613",
    "messages": [
    {"role": "user", "content": "What is the weather like in Boston?"},
    {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather",
    "arguments": "{ \"location\": \"Boston, MA\"}"}},
    {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": 22,
    \"unit\": \"celsius\", \"description\": \"Sunny\"}"}
    ],
    "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"]
    }
    }
    ]
    }

    View full-size slide

  19. レスポンス
    @postman_japan
    {
    "id": "chatcmpl-7RMZdrjDXaDny6pE5FfadTvrXd8DC",
    ...
    "choices": [
    {
    "index": 0,
    "message": {
    "role": "assistant",
    "content": "The weather in Boston is currently sunny with a temperature of 22
    degrees Celsius."
    },
    "finish_reason": "stop"
    }
    ],
    ...
    }

    View full-size slide

  20. OpenAI のサンプルの
    データを日本語にしたら
    機能するのか?
    @postman_japan

    View full-size slide

  21. リクエスト
    @postman_japan
    {
    "model": "gpt-3.5-turbo-0613",
    "messages": [
    {"role": "user", "content": "横浜の天気はどんな感じ?
    "}
    ],
    "functions": [
    {
    "name": "get_current_weather",
    "description": "与えられた場所の現在の天気を取得
    ",
    "parameters": {
    "type": "object",
    "properties": {
    "location": {
    "type": "string",
    "description": "県と市区町村。例: 愛知県名古屋市"
    },
    "unit": {
    "type": "string",
    "enum": ["摂氏", "華氏"]
    }
    },
    "required": ["location"]
    }
    }
    ]
    }

    View full-size slide

  22. レスポンス
    @postman_japan
    {
    "id": "chatcmpl-7RMqnNiRPVVmoGI0K6EHxQ1BJq8yV",
    ...
    "choices": [
    {
    "index": 0,
    "message": {
    "role": "assistant",
    "content": null,
    "function_call": {
    "name": "get_current_weather",
    "arguments": "{\n \"location\": \"神奈川県横浜市\"\n}"
    }
    },
    "finish_reason": "function_call"
    }
    ],
    ...
    }

    View full-size slide

  23. ここでお天気 Function を呼ぶ
    @postman_japan

    View full-size slide

  24. リクエスト
    @postman_japan
    {
    "model": "gpt-3.5-turbo-0613",
    "messages": [
    {"role": "user", "content": "横浜の天気はどんな感じ?
    "},
    {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather",
    "arguments": "{ \"location\": \"神奈川県横浜市\"}"}},
    {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": 22,
    \"unit\": \"摂氏\", \"description\": \"晴れ\"}"}
    ],
    "functions": [
    {
    "name": "get_current_weather",
    "description": "与えられた場所の現在の天気を取得
    ",
    "parameters": {
    "type": "object",
    "properties": {
    "location": {
    "type": "string",
    "description": "県と市区町村。例: 愛知県名古屋市"
    },
    "unit": {
    "type": "string",
    "enum": ["摂氏", "華氏"]
    }
    },
    "required": ["location"]
    }
    }
    ]
    }

    View full-size slide

  25. レスポンス
    @postman_japan
    {
    "id": "chatcmpl-7RMx7CDcxQnqkKHHND2lvUr9iAVaA",
    ...
    "choices": [
    {
    "index": 0,
    "message": {
    "role": "assistant",
    "content": "横浜の天気は晴れで、気温は
    22℃です。"
    },
    "finish_reason": "stop"
    }
    ],
    ...
    }

    View full-size slide

  26. おわりに
    @postman_japan

    View full-size slide

  27. Software 1.0 + Software 2.0
    レガシーなデータ資産が、この機能により
    AIの世界と結
    びついて活用が進んでいくのでは、という期待
    @postman_japan

    View full-size slide

  28. API がサービスを繋ぐ
    APIの重要性が格段に大きくなる世界
    @postman_japan
    AI(大規模言語モデル)

    View full-size slide

  29. ダウンロードして無料でスタート!
    https://www.postman.com/downloads/
    デスクトップアプリ
    ● Windows
    ● Mac
    ● Linux
    Web アプリ
    ● アカウント登録で同
    じ機能をブラウザで
    も利用できる
    @postman_japan

    View full-size slide

  30. ありがとうございました
    @postman_japan

    View full-size slide