Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

GPTのハッカソンを通して知ったことをまとめる

目次

概要

最近GPTを使うハッカソンに出て、人との交流を通して色々な知識を得たので、まとめます。

ペイジーってサービスを初めて知った

ペイジーを使えば、公共料金とかをインターネット上から払えるそうです。

ペイジー 何に使える - Google Search

もしかしたら、paypayからペイジーを使えそうです。

Pay-easy(ペイジー)とは - PayPay銀行

LangChainをざっくり知った

LangChainとは、GPTの能力を強化するLLMのライブラリです。 GPTとは違う団体?が管理しているライブラリだそうです。聞いた話によると。 LangChainは、PythonとTypeScriptで使えます。

GPTをドーピングする LangChain 基礎編

Chains | 🦜️🔗 Langchain

Vision APIを使えば、画像からテキストを取り出したりできる

Vision APIを使うことで、物理的な書類の画像をデジタルデータに変換することができるので、DXに使えそう。

LambdaとCloud Vision APIで日本語の文字抽出をしてみた | DevelopersIO

Googleの画像分析 (Vision API)で、できる10種類以上のこと!

Custom Search Json APIを使えば、Googleの検索結果を取得できる。

このAPIを使えば、インターネット上でサイトを運営しているかをチェックできそう。

Custom Search APIを使ってGoogle検索結果を取得する #Python - Qiita

PlayWriteはセレニウムみたいなやつ。

PlayWriteを使えば、プログラムからインターネット上のサイトにアクセスして、サイトを操作して、出力をプログラムから得れるそう。 何か特定のサイトからしか入手できないような情報を得たいときに使えそう。 やっぱLLMとかデータの操作とかはPythonで解説されている記事が多いし、ライブラリもPythonを優遇しているから、Pythonはできた方が良いのかなと思った。。Pythonの環境構築のめんどくささだったり、endを書かないのが嫌だけど、好き嫌いしない方が良さそうやな。

Fast and reliable end-to-end testing for modern web apps | Playwright

ベクトルデータベースってよく分からんけど、LLM使うなら大事そう

意味が近い単語が短い距離になっていて、検索スピードが上がるような構造のデータベース?だと言ってたような気がする。いずれ調べるか。

https://zenn.dev/moekidev/articles/9e8b85025d590e

このyoutube参考になる。GPTでなんか作るときにもう一度見た方が良いかも。

https://www.google.com/search?q=langchain+%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F&rlz=1C5CHFA_enJP931JP939&oq=langchain+%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCDY4NjRqMGoxqAIAsAIA&sourceid=chrome&ie=UTF-8#fpstate=ive&vld=cid:42f9341b,vid:eCtHVmXcXMs

OpenAIのAPIの一つにEmbeddings APIというものがあるそう。 これを利用すると文章をベクトルに変換できるそう。このベクトルをベクトルデータベースに保存するのか。

OpenAIのEmbeddings APIのベクトルを使って検索を行う | DevelopersIO

ベクトルデータベースの特徴と用途

https://platform.openai.com/docs/guides/embeddings/what-are-embeddings

function calling

最近 Open AI APIのfunction callingという機能を初めて知った。 GPTは2021年9月までのデータで構成されているので、GPTだけだとの明日の天気予報を取得できない。しかし、function callingを使えば、プロンプトの内容からもし天気予報のAPIを呼び出す必要があれば、「天気予報APIにリクエストする関数を呼び出してください」っていう結果をOpen AI APIが教えてくれる。その結果をもとにサーバー側で天気予報APIにリクエストする関数を呼び出せば、GPTを使いながら最新の天気予報の情報を取ってこれる。

例は天気予報BOTでの使い方だけど、アイデア次第では別の応用もできそうな気がする。

https://zenn.dev/kazuwombat/articles/1f39f003298028

フューショットラーニング

フューショットラーニングをざっくりまとめると、あらかじめお題とお題に対する答えを渡しておいて、それを元に出力を出してくれるGPT APの利用手法です。「風が吹けば」というお題と、「桶屋が儲かる」という答えを渡しておくことで、「雨が降れば」という質問をGPTに渡すと、「ピザ屋が儲かる。なぜなら~」という答えを返してくれます。

ChatGPTは馬鹿じゃない! 真の実力を解放するプロンプトエンジニアリングの最前線

LangChainのchain

Chains は、LLM を連鎖的につなげていくことのできるモジュールです。 ある LLM の出力を別の LLM の入力として使用したいときに便利です。LLM これらをつなげることで、1 つの LLM だけでは実現できない処理を行うことができます。

おそらく一回のリクエストでGPTの結果を連鎖的に繋いで、最終的な結果をサーバーに返してくれるやつだと思う。日本語の出力結果を一回のプロンプトだけだと英語にできない場合に、使うと良さそう。

GPTをドーピングする LangChain 基礎編

外堀を埋めていく

直接無理矢理にその目的を実現しようとするのではなく、周辺の課題をまずはクリアし、本来の目的に向かっていこう…とすることを「外堀を埋める」と言います。

この言葉の意味初めて知った。

武士の戦いが由来?「外堀を埋める」の意味や使い方・類義語を院卒日本語教師がわかりやすく解説 – Study-Z

働きたくない

自分が仮に自社サービスの会社に入ったとして、最初は楽しいとは思うんだけど、そのうち「なんでこのサービスの実装コスト高そうなめんどくさい機能を私がやらないといけないのよ」って思考になりそうだなと思った。理由を考えてみた。

  • やっぱ仕事は仕事なので、仕事をしている時間が増えることで、自分のやりたいことができる時間が減るのが嫌だから。縛られたくない。
  • 自分の実力が無いと、コミュニケーションコストがめちゃくちゃかかる。特にフルリモートだと余計めんどくさい。聞くのがめんどくさい。隣にいてサクッと聞けるのが良い。(しかし、サクッと人に聞けるってことは自分が実装中にも人にサクッと聞かれるという意味でもある)。しかも聞く人との相性が悪いとまじでモチベーションが下がる。
  • サービスに対する思い入れみたいなのが自分には無いから、そもそもやりたいと思わない。なんでめんどくさいことを私がやらないといけないのよと思ってしまう。

技術的に難易度の高いことをやったりするのは好きだけど、それも仕事も全てやっぱ近しい人の力になれるのが自分は好きだからやっているのかなと感じた。そこが先行しないと、「なんでこのめんどくさい仕事しないといけないのよ、どうでもいいことで働きたくない」って思うのかもしれない。3年とか長く勤めたいなら、サービスや技術も大事だが、まずはそこを先行させないとなと思った。いろんなバイトやってはよく辞めてたけど、人との相性が良くて楽しいところは3年とか1年とか余裕でやっていたので、やっぱ人なのかなと思った。エンジニア続けてみて、実力が着いたらまた考え方は変わりそうな気もするけど、なんだかんだ近しい人が職場にいるってことはめちゃくちゃ大事だなと思う。

その他の参考記事

大規模言語モデルの知識を補完するための Retriever の紹介 - ACES エンジニアブログ

初めてのハッカソンの記録

https://platform.openai.com/docs/api-reference/completions/create