1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JSL(日本システム技研) Advent Calendar 2024

Day 5

Chat Completions APIのハンズオンをやった際のメモ的なもの

Last updated at Posted at 2024-12-24

はじめに

この記事は JSL (日本システム技研) Advent Calendar 2024 - Qiita 5日目の記事です。

当社はDjango等を使用したWebアプリケーション開発を主体としていますが、LLM案件の問い合わせも多くなってきたので、「LangChainとLangGraphによるRAG・AIエージェント[実践]入門 」という書籍を購入しました。
今回は、その中にあったハンズオンをしつつ気付いたことをメモ的に記事にしました。

環境:

  • macOS 12.6 Apple M1 Pro
  • Google Colab

前準備

OpenAIのAPIキーを取得します。
こちらの説明は割愛します。

Chat Completions APIの呼び出し

APIとのやり取り時は、role(役割)とそれに付随するcontent(本文)
セットで渡します。
roleは、system(エージェントの事前設定?)user(利用者)agent(エージェント)があるようです。

import os
from openai import OpenAI
from google.colab import userdata

os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY")

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages = [
        { "role": "system", "content": "You are a helpful assistant."},
        { "role": "user", "content": "こんにちは!私はジョンと言います!"},
    ]
)
print(response)

レスポンスが分かり難かったので、ChatGPTからのメッセージのみを抽出してみました。

#print(response)↓
print(response.choices[0].message.content)
こんにちは、ジョンさん!お会いできてうれしいです。今日はどんなことをお話ししましょうか?

会話履歴を踏まえた応答を得る

APIでは会話履歴を保存する機能は無いため、自前で履歴を渡してあげる必要があります。

import os,json
from openai import OpenAI
from google.colab import userdata

os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY")

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages = [
        { "role": "system", "content": "You are a helpful assistant."},
        { "role": "user", "content": "こんにちは!私はジョンと言います!"},
        { "role": "assistant", "content": "こんにちは、ジョンさん!お会いできてうれしいです。今日はどんなことをお話ししましょうか?"},
        { "role": "user", "content": "私の名前が分かりますか?"},
    ]
)
print(response.choices[0].message.content)
はい、あなたの名前はジョンさんです。何か他にお話ししたいことや質問がありますか?

JSON形式でレスポンスを得る

事前に返して欲しいJSONフォーマットを指定してあげるとJSON形式でレスポンスを得ることが出来ます。ハンズオンのものより少し入力値を変えてみました。

import os,json
from openai import OpenAI
from google.colab import userdata

os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY")

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages = [
        {
            "role": "system",
            "content": '人物一覧を日本語で次のJSON形式で出力してください。\n{"people":["aaa","bbb"]}'
         },
        {
            "role": "user",
            "content": "昔々あるところにおじいさんとおばあさん、grandchildがいました。"
         },
    ],
    response_format={"type":"json_object"},
)

print(response.choices[0].message.content)
{"people":["おじいさん","おばあさん","孫"]}

感想

  • Chat Completions API仕様は意外とシンプルで分かりやすかったです。

  • 会話履歴は自前で管理しないと駄目ということを知りました。今後の開発時に考慮しておきたいと思います。

  • Google Colabの補完機能に助けられたため、コーディングが捗りました。

  • 今後は、Function callingを試したいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?