見出し画像

@mah_labが3月につくったモノのまとめ

3月はGPT-3.5(ChatGPT) APIの登場で一気に界隈が盛り上がりましたね!

私も祭りに乗じていろいろなものを作ってアップし続けていたので、3月のふりかえりとしてまとめてみました。

GPT-3.5(ChatGPT) API関連

テキストデータ変換

GPTの代表的な用途としてテキスト要約がありますが、LlamaIndexのようなライブラリを活用した精度の高いテキスト要約が注目を集めていました。

ただ、要約タスクで言えばLlamaIndexを使うよりシンプルにmap-reduce型で行った方が品質が良くなるなーと思って作ったのが以下のアプリでした。

コードでは手動でmap-reduce的なことをしていますが、そもそもLangChainに同じ仕組みがあったことに気付いて、わざわざ手組みしたことを後悔しました。LangChain凄い。

非構造化データ変換

GPTのデータ変換能力に着目して、まず手元のPDFのデータをフラットなテキストデータに変換した後にNotionのデータベースに登録できるようなデータに変換できないかなと思って着手したのが以下のプロジェクトでした。

これでPDFからのデータ変換が上手くいくことが分かったのと、地元のミートアップでCivicTechに興味があるという人と出会ったことが組み合わさって着想を得たのが行政文章のデータ変換でした。

投稿した翌日は淡路島に出張していたのですが、運良くインフルエンサーの方に取り上げていただけたらしく怒濤の勢いでスキ通知が来ていたのを覚えています。

すごいなー。

データ生成

お金になる方の仕事でサービス改善のためのアンケートを作成するタスクがあったのですが、実のところアンケートの設計は大の苦手です。コストをかけて収集したものの、「やっぱりこの観点で聞いた方が良かったかなぁ」なんて後悔することも多いからです。

そんなアンケート調査も素振りができるとすれば、もっとアンケート項目を洗練させることができるのではないか? そもそも素振りだけでも十分なインサイトを得ることも可能なのではないか? という着想から取り組んだのが下記のプロジェクトでした。

1000人ぐらい生成してアンケートをとってみると面白い結果が出そうです。まだ作り途中ですが動くコードは下記のリポジトリに置いています。

コード生成

GPTと言えばコード生成。RFP(提案依頼書)からいくつかのコンセプトを土台とした要件定義が生成され、その要件を満たすかどうかのテストケースからコードが生成される世界線があるのではないか? と考えて取り組んでみたのが以下のプロジェクトです。

トークン数の制限で成果が出なかった面もあるので、GPT-4 APIが使えるようになったら改良バージョンを作ってみたいです(まだウェイティングリスト待ち…)。

ところで、現在提供されているGPT-3.5 APIは2021年9月までのデータを基にトレーニングされており、最新のライブラリを前提としたコードを生成することはできません。更新の早いLangChainみたいなライブラリや、React & Next.jsのような変化の激しいフロントエンド界隈のコードを生成するためには最新の情報を基にコード生成して欲しいところです。

そこで最新のドキュメントをインデックスすれば良い感じにコード生成できるのではないかと思って試してみたのが以下のプロジェクトでした。

記事内ではあまり精度が出ませんでしたが、プロンプトからサンプルコードを適切に抽出できれば可能性は拡がるなと思っています。特にフロントエンド周りの動きは、できることはそんなに変わっていないくせにやたらブレイキングチェンジが発生する印象があって学習するのも億劫なので、AIに9割ぐらいコード生成を任せられるような世界線を実現したいです。

スキーマ生成

お金になる方の仕事ではノーコードツールであるkintoneをよく扱います。kintoneをバックエンドにした統合的なシステムデザインをすることも多いのですが、その際の叩き台を作る作業があまりにもつらいので自動化できないかなと思って取り組んだのが以下のプロジェクトでした。

ノーコードツール内のアプリをコードで生成するというノーコード殺し的な発想ですが、プロジェクトから私が離れたあとも継続的に改修できる状況を実現するのにはノーコードツールが便利です。とはいえ、AIが生成したものを人間が保守するというのも過渡期的な匂いがするので、改修そのものもAI Assistedに行えるようになって行く流れで、同じノーコードツールと呼ばれているもののUXも大幅に変わっていくのが道理でしょう。

LangChain関連

Chains

最近LangChainを持ち上げているわりに、LangChain単体で扱ったテーマはあまり多くありませんでした。恐らく自然と使いすぎているのかも知れません。。

ところで現在業務委託としてお世話になっているソニックガーデンでは定期的に社内ハッカソンを開催しています。3月のテーマはOpenAI APIとのことでお誘いいただき、ゲスト枠で参戦して当日開発したアプリが以下でした。

最近家族内ではずんだもんが流行っており、話した言葉をずんだもんがオウム返しするアプリを作ったら延々と遊び続けているところに着想を得て作ったものでした。コードは以下のリポジトリに置いています。

ちなみにハッカソンでは優勝しまして、優勝賞品は味付け海苔でした。サンキュー!

うちの4歳児が大好き

ベクトルDB

ベクトルDBにもいろいろありますが、Pineconeのようなサービスは個人用途ではコストがかかりすぎるなーと思って、現在使っているのがChromaです。まだまだ粗削りなプロダクトですが、頑張っている姿がIssueから見えてくるので草葉の陰から応援しています。

LangChainアプリケーションのデプロイ関連

Streamlit

ローカルでの検証も楽しいですが、いろいろ取り組む中でデモを触ってもらう機会も増えてきたので、サクッとデモ用のUIを作る方法を模索していました。

FastAPI

ただStreamlitではあまり体験が良くなかったりしたので、巷にあるChatbot UIと接続できるようなAPIを作って接続させるような方向性で取り組んでいたのが下記のプロジェクトです。

PythonでAPIを書いたのは初めてだったのですが、FastAPIはかなりイケてるなーと感じました。Rubyにはデコレータのような仕組みがないので、デコレータでルーティングを書けるのは楽で良いですねー。

Chatbot UIに接続してみると、体験的にはほぼChatGPTです。以下がサーバサイドのコードなのでご参考ください。

Railway.app

デプロイ先として当初はAzureを考えていたのですが、Terraformのコードの保守と費用の面でオーバースペックだなぁと思っていたところ、FastAPIのデプロイ先であればRailwayがかなりお手軽だということに気付いて取り組んだのが以下のプロジェクトでした。

コードは以下のリポジトリに置いてあります。

もくもくLangChainの立ち上げ

ChatGPTイベントへの登壇

そもそも3月中にいろいろ取り組んだ理由は、何となく目にとまったChatGPTイベントのLTにノリで申し込んでみたらめちゃめちゃ参加者数が集まり続けているのを見て「ヤバイ、マトモな事を話さなくては…」と過分なプレッシャーを感じたからでした。1700人て。

そんなこんなでnoteを投稿し続けたおかげで界隈で関心の高そうなテーマを無事発見することができ、LTで話すことができました。

LangChainもくもく会の開催

で、せっかく1700人ぐらいの前で登壇するなら何かに繋げないとなーと思って立ち上げたのが「もくもくLangChain(langchain-jp)」です。

登壇した翌週の開催だったのにもかかわらず30名ほどの方に参加いただけました。

当日参加してくれた白井さんがアツイレポートを書いて下さっています。

第2回は4/13(木)に開催予定で、第3回は4/27(木)と、隔週木曜日開催で定期化しようと考えています。第2回は既に60人以上集まっていてスゴイ。

ところでもくもくLangChainではAIコミュニティであるAIADのDiscordを使わせていただいているのですが、そのAIADの主催であるサガワさんが「プロンプトもくもく会」を4/20(木)に企画されています。

LangChainを上手く扱うためにもプロンプト力は必須(LangChainのライブラリ内のコードも結構プロンプトゴリ押し)なので、お時間の合う方はぜひご参加を!

結び

触り始めなのもあってタスク実行系の取り組みがほとんどでしたが、個人的な本命は自律駆動系AIで、それも自律分散型組織モデルでエージェント同士が創発を行うようなシステムを作れないかなーというところに興味があります。最近海外での自律駆動系AIの取り組み事例が目に入るようになってきたので、4月以降はそのあたりを中心に取り組めるといいなーと思っています。どうなるかはわからんけど。

現場からは以上です。

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