見出し画像

OpenAI続き。動いたのでmessagesやroleパラメータをいじってみる

前回はチュートリアルを真面目に読んでサンプルが動くところまでを試しました。
ChatGPTが話題なのでOpenAIを試してみた!

久しぶりに環境作ってみたり、viコマンドでソースを書いてみたりで、体が覚えているようで覚えていなかったりで苦労する部分も多かった。まあ、サンプルを動かしてみておしまいだと当たり前だけど意味がないので、分かる範囲から今回は書き換えてみることにする。

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
    {"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
  ]
)

print(completion.choices[0].message)

参考までに前回に動かしてみたサンプルコード。とりあえず動けーと思っていたので前回は中身をあんまり読んでいなかったのだが、messagesの部分がよくわからない指定をされているので今回は少し調べてみた。

どうやらこのmessagesオブジェクトの中でroleとcontentを指定して、実際にコマンドを送る仕様になっているとのこと。roleは以下の3つが指定できる。そしてcontentで具体的な指示を出すことで実際に動作される。

systemパラメータ

openai側の役割を設定するとのこと。ひとまずの私の理解としては、回答するキャラのキャラ設定?みたいなものと理解。

assistantパラメータ

まだ応答部分をちゃんと処理するロジックを作っていないのだが、openai側と継続したやりとりするための補足情報を渡したりするものと理解。

userパラメータ

上記のsystemやassistantのパラメータで設定したことを前提として、実際に実行してみて欲しいことを記載したり、質問を投げたりするものと理解。

読み進めていった結果、上のようなちょっと歪んだような理解になったので、まずはキャラ設定をして、そのキャラになり切った感じで何か回答してみてもらおうーと試してみた。

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "あなたはIT会社の社長です"},
    {"role": "user", "content": "これからの会社のビジョンを50文字以内で発表してください。"}
  ]
)

print(completion.choices[0].message)

とりあえず最近は会社のビジョンって何ですか?とか聞かれたりすることも多いので私の代わりに考えてみてもらったw

そのレスポンスがこちら

ChatCompletionMessage(content='未来のテクノロジーを駆使し、人々の生活を革新。
革新的なソリューションを提供し続けるITリーダー企業。', role='assistant', 
function_call=None, tool_calls=None)

さすがChatGPTというかOpenAI!!
それっぽいことを返してくれる。いけているIT社長っぽいw
ただなんかやってことが厨二病っぽい気になってくる。

もう少しいじってみる。meesagesだけ書き換え

  messages=[
    {"role": "system", "content": "あなたは神です。天と地と人を作りました"},
    {"role": "user", "content": "人が多く増えました。あなたは今後どうしていきますか?"}
  ]
ChatCompletionMessage(content='人々が増えたことを喜びつつ、彼らが平和で幸福な生活を送るために
尽力します。私は彼らに賢明な指導者や教えを送り、善い道を歩むための助言を与えます。また、災害や病気など
の困難に対しては、彼らを守り、支えるための力を提供します。\n\nさらに、人々が自然環境を維持しながら、持続
可能な方法で資源を利用することが重要であることを教えます。地球を守り、生物多様性を維持するために、適切
なエネルギー源の探求や環境保護の取り組みを奨励します。\n\n全ての人々が平等に尊重され、互いに愛し合い
、助け合い、共に成長する社会を築くために、人々の心に思いやりと共感を育むことも大切です。私は個々の人々が
幸せになるための目標や夢に向かって、彼らを励まし、サポートすることもします。\n\n最後に、人々が死を迎える
時にも、彼らが平穏に旅立ち、次の世界で幸せになれるように導きます。人々を愛し、彼らの喜びと苦しみに共に感
じる神として、彼らが豊かな人生を送ることができるように指導し、保護することを継続していきます。', 
role='assistant', function_call=None, tool_calls=None)

前回と違い文字数の制限をしなかったら長文で語ってくれた。あと実験のポイントはsystemで「神」と定義してみて、userの指定では「あなた」としてみたところ。ちゃんとsystemでの設定とuserでの指示が噛み合っている回答が出てきていることが確認できた。

これ以上いくと脱線して楽しんでしまいそうなので今日はここまで。次回はもう少しassistantや他のパラメータをいじってみようと思う。


株式会社やどかりは仲間を探しています。

自分の仕事に誇りを持っている人、楽しく仕事ができる人。
入社年数に関わらず、スキルによって様々な仕事のチャンスがある会社です。やどかりのことをもっと知りたい方はこちらをクリック!

事業内容:スマートフォン・タブレットアプリの開発/Webサイト開発/ITコンサルティング
業種一覧:Androidエンジニア/iOSエンジニア/サーバエンジニア/フロントエンジニア/ディレクター


この記事が気に入ったらサポートをしてみませんか?