Python × Chat GPT API で、今日のタスクを洗い出してくれるプログラム作ってみた。

環境構築

Google Colaboratory の導入

Pythonの実行環境として、Google Colaboratoryを使ってみます。
 ※ちなみに Python 書くの初めてです。

Colab とは

Colab(正式名称「Colaboratory」)では、ブラウザ上で Python を記述、実行できます。以下の機能を使用できます。
・環境構築が不要
・GPU に料金なしでアクセス
・簡単に共有
Colab は、学生からデータ サイエンティストAI リサーチャーまで、皆さんの作業を効率化します。詳しくは、Colab の紹介動画をご覧ください。下のリンクからすぐに使ってみることもできます。

ノートブックを新規作成

ファイル名をわかりやすい名前に変更する

作成したファイルは、マイドライブ > Colab Notebooks に格納されます

とりあえず Python が動くことを確認

3+5 を print関数で囲ってないけど 8 が出力されるのは Python の仕様なのか??

openaiライブラリをインストール

!pip install openai

ソースコードを書いてみる

まずは適当に簡単なプログラムをかいてみる

!pip install openai
from openai import OpenAI

# APIキーとモデル名を設定
API_KEY = "your_openai_key"
MODEL = "gpt-4o-mini"

client = OpenAI(api_key=API_KEY)

prompt = "取引先とお台場まで日帰りでドライブをします。\n以下の勘定科目を教えてください\n1レンタカー代\n2昼食代"
completion = client.chat.completions.create(
    model = MODEL,
    messages = [
        {"role": "system", "content": "あなたは最高に優秀な税理士です。"},
        {"role": "user", "content": prompt}
    ]
)

print("アシスタント: " + completion.choices[0].message.content)

実行結果

アシスタント: 日帰りでのドライブに関する経費の勘定科目は以下の通りです。

1. **レンタカー代**: 「車両運搬具費」または「旅費交通費」
   - 会社の業務のためにレンタカーを利用する場合は、「旅費交通費」として処理することが一般的ですが、車両運搬具費としても認識されることがあります。

2. **昼食代**: 「接待交際費」または「旅費交通費」
   - 取引先との会食や昼食が商談の一環であれば「接待交際費」として処理します。ただし、会社の業務に関連する場合でも、一般的に社員の昼食代は「福利厚生費」や「旅費交通費」としても扱われることがあります。

具体的な状況や会社の経理方針によって異なる場合がありますので、確認が必要です。

なるほど、「旅費交通費」というのは勉強になった。

本題のタスクを整理してくれるプログラムを書いてみる

案件のやり取りを設定する

これが結構大変だった。。。
普段チャットワークでやりとりをしているので、とりあえず全部のやり取りを assistant にぶっ込んでいく

もはや手動で管理した方がいいんじゃないかというレベル。

チャットの内容を assistant に入れて、以下の指示をしてみる。
※金額や内容はサンプルなので変更してあります。

依頼内容をまとめてください。
また、FTPのパスワードを教えてください。

!pip install openai
from openai import OpenAI

# APIキーとモデル名を設定
API_KEY = "your_openai_key"
MODEL = "gpt-4o-mini"

client = OpenAI(api_key=API_KEY)

prompt = "依頼内容をまとめてください。\nまた、FTPのパスワードを教えてください。"

assistant = "案件名:「EXAMPLEサイト」のSSL化\n"

assistant += "受信日:2023年10月19日 10:05\n"
assistant += "送信者:oさん\n"
assistant += '''
新規案件の相談です。このサイトにSSLを実装したいです。
http://example.com/

サーバーに無料のsslがなければ、下記の利用を希望します。

Let's Encrypt - フリーな SSL/TLS 証明書
Let's Encryptは、非営利団体の Internet Security Research Group (ISRG) が提供する自動化されたフリーでオープンな認証局です。
''' assistant += "受信日:2023年11月2日 11:21\n" assistant += "送信者:oさん\n" assistant += ''' お疲れ様です。 SSLの件ですが、新たにサーバーを契約して、そこにサイト移設し、そこでsslを導入するといったことになりました。 そこで、下記の作業をお願いしたいのですが、お見積りお願いできますでしょうか。 ・レンタルサーバーとプランの選定 →サイトのボリュームを把握していただき、どのプランで対応可能か判断してほしいです。 Xサーバーでいい気がしているのですが、どう思いますか? ・WEBサイトを新サーバーに移設 ・WEBサイトにSSL実装 ・WEBサイトのWPを最新に変更、それに伴う不具合の修正 ・対象サイト
Example Domain
・FTP情報 ホスト名 192.168.0.1 ユーザ名 ftp-user パスワード ftp-password ・WP
http://192.168.0.1/wp-admin/
ユーザー名:wp-user パスワード:wp-password''' assistant += "送信日:2023年11月2日 14:45\n" assistant += "送信者:自分\n" assistant += ''' >・WEBサイトのWPを最新に変更、それに伴う不具合の修正 これだけ工数感の算出が難しいです。 もし角度が高そうであれば実際にテスト環境を作って、どれくらいの不具合が出るかをテストしてみたいと思います。 予算感として、いくら以上だと厳しいそうなどわかりますでしょうか。。 こちらは大体30万円くらいを想定しております。 ''' assistant += "受信日:2023年11月9日 10:56\n" assistant += "送信者:oさん\n" assistant += ''' それぞれの案件ごとに見積がほしいです! ''' assistant += "送信日:2023年11月9日 11:08\n" assistant += "送信者:自分\n" assistant += ''' 以下、お見積りと内訳になります。 1レンタルサーバーとプランの選定  50,000円 2WEBサイトを新サーバーに移設  50,000円 3WEBサイトにSSL実装  50,000円 4WEBサイトのWPを最新に変更、それに伴う不具合の修正  200,000円 合計:350,000円 ※4に関しては、テストを行う中で、更新ができないプラグイン、機能が出てくる可能性があります。 ご検討いただけますと幸いです。 ''' assistant += "受信日:2023年11月14日 17:54\n" assistant += "送信者:oさん\n" assistant += ''' お疲れ様です。 この案件なのですが、1,2,3だけお願いしたいってきてるんですが、 同じ金額で出して大丈夫ですかね? ''' assistant += "送信日:2023年11月15日 9:23\n" assistant += "送信者:自分\n" assistant += ''' はい、金額変わらずで大丈夫です。 ''' assistant += "受信日:2023年11月22日 10:42\n" assistant += "送信者:oさん\n" assistant += ''' 本件、受注となりました。 情報まとめますので、少々お待ちください。 どちらも年内に納品できればと思いますが、リソースどうですかね? 受注内容:1,2,3 ----引用文---- 以下、お見積りと内訳になります。 1レンタルサーバーとプランの選定  50,000円 2WEBサイトを新サーバーに移設  50,000円 3WEBサイトにSSL実装  50,000円 4WEBサイトのWPを最新に変更、それに伴う不具合の修正  200,000円 合計:350,000円 ※4に関しては、テストを行う中で、更新ができないプラグイン、機能が出てくる可能性があります。 ご検討いただけますと幸いです。 ----引用文---- ''' assistant += "送信日:2023年11月22日 10:50\n" assistant += "送信者:自分\n" assistant += ''' ----引用文---- どちらも年内に納品できればと思いますが、リソースどうですかね? ----引用文---- 問題ございません。 サーバーの構築からとなりますので、確認し、またご連絡させてください。 ''' assistant += "受信日:2024年6月24日 11:57\n" assistant += "送信者:oさん\n" assistant += ''' お疲れ様です。 以前から相談していたこの案件なのですが、対応してほしいと連絡がありました。 対応をお願いしたい内容に変更はありません。 先方からのスケジュールの指定はなく、 こちらに任せると言われているのですが、 直近のリソースいかがでしょうか? ■依頼内容 変更なし ■ftpの新パスワード ftp-new-password ''' completion = client.chat.completions.create( model = MODEL, messages = [ {"role": "system", "content": "あなたは最高に優秀なアシスタントです。"}, {"role": "assistant", "content": assistant}, {"role": "user", "content": prompt} ] ) print("アシスタント: " + completion.choices[0].message.content)

↓↓↓出力結果がこちら↓↓↓

アシスタント: ### 依頼内容のまとめ

**案件名**:「EXAMPLEサイト」のSSL化 (再依頼)

**受注内容**: 
1. **レンタルサーバーとプランの選定**
   - サイトのボリュームを把握し、適切なプランを選定
   - Xサーバーの検討

2. **WEBサイトを新サーバーに移設**

3. **WEBサイトにSSL実装**

**対象サイト**:
- http://example.com/

**新FTP情報**:
- ホスト名: 192.168.0.1
- ユーザ名: ftp-user
- 新パスワード: **ftp-new-password**

**WP情報**:
- WP管理画面: http://192.168.0.1/wp-admin/
- ユーザー名: wp-user
- パスワード: wp-password

めっちゃいい感じにまとめてくれてる!!!!
いい!!
すごくいい!!!

デメリット

チャットのやりとりをまとめるのが超大変

チャットワークの文章を一個づつ拾って assistant に入れていく作業がめちゃくちゃ大変だった。

やりとりが多くなるほどトークン数が増える

ChatGPT api はトークン数に応じた従量課金制ということは知っていたが、prompt だけがトークンの対象だと思ってたよ。。。

assistant もトークン数に含まれるということが分かって、やりとりが膨大になるとそれなりに金額もいってしまう。

何か別の手段を考える必要があるなぁ。

最後に

本題の「今日のタスクを洗い出してくれるプログラム」までは辿り着かなかったが、少なくとも「案件の整理」ができることまではわかった。

コメント