LangChainとStreamlitのPoC(仮

はじめに

10年以上前に多摩美術大学の先生にデジタルファブリケーションについてワークショップを受講したことがあります。そこで「アートとは作品を通じて社会問題などを理解してもらうような問題提起をするものだ」。と教えていただきました。本記事ではいつもと経路を変えてソリューションによる問題解決よりは問題提起をしているアート作品です。

さて生成AIは急速に注目を集める分野ですが、生成AIを使ったサービスの大部分のコードはAIとは直接関係がありません。つまり既存のWebサービス開発で培った技術力が、生成AIを活用するサービス構築の成功に不可欠です。 今回はPythonベースのWebアプリケーション作成ライブラリである Streamlit を利用し、巷にある生成AIアプリケーションによくある機能のコア部分再現し、既存のWebサービスの技術のウエイトの大きさを感じでいただきたいというのが本稿の趣旨です。

また、Streamlitはシンプルなプロトタイプの開発が容易になり、迅速なPDCAサイクルを回すことができます。生成AI向けのライブラリLangChainやLangGraphを組み合わせて、社内ツール程度であれば運用レベルの生成AIシステムにまで成長させることもできます。

生成AI活用の実情とWebサービスの融合

この1, 2年の間に単機能の生成AI実装は容易になり、実験的なプロトタイプを構築できる時代となりました。しかし、生成AIを実用的なサービスへと昇華させるためには、Webサービス開発における堅牢な設計思想と運用ノウハウが求められます。

  • プロトタイピングのスピード
  • Streamlitのようなツールは、短期間でUIを構築し、生成AIの結果を可視化するのに最適です。

  • スケーラビリティと信頼性
  • 生成AIの機能を本格的なWebサービスに組み込む場合、既存のバックエンド技術やインフラ知識が、安定稼働と拡張性を担保する鍵となります。例えばRAGを構築する先のデータソースの追加更新をベクトルデータベースに反映させるなど。

具体的な生成AIツール事例

リアルタイム情報からの文書生成ツール

概要

天気情報や時節に合わせたPR文章、ニュースタイトルを自動生成するシステムです。

実装ポイント

今回は天気情報を取得して短いポエムを生成するものを作りました。外部APIからリアルタイムデータを取得し、生成AIにその情報を渡すことで、文脈に即した文章を作成します。

活用例

季節ごとのキャンペーン告知や、イベント開催時のニュースリリースなどに有用です。SEOに特化したタイトルづくりにも役立ちそうです。

Streamlitの便利さ

このサンプルをとおしてSteamlitの便利さを紹介します。 Streamlitは複雑な設定なしで、ボタンやスライダーなどの画面部品を直感的に配置でき、ユーザーのボタン操作などでリアクティブに結果が表示されます。これを自前でReactで実装しようとすると少し面倒なところをさっと実装できるためすばやく検証が可能です。 生成AI系のライブラリはpythonが多いので言語をpython縛りにできるのも良い点です。

簡単にメリット・デメリットをまとめると

メリット:

  • 短時間で試作品や小規模なアプリが作れるため、開発サイクルを大幅に短縮できます
  • 直感的な操作で、データの確認や結果のフィードバックがすぐに得られます
  • 簡易な認証システムも用意されている
  • Streamlit Community Cloudを使えばボタンクリックでデプロイが可能

デメリット:

  • 大規模なシステムや高いアクセス負荷がかかる場面では難しい
  • 細かなデザイン変更や特殊な機能を求める場合、用意された部品では対応できない

[ここにキャプチャ!]

文書校正ツール

概要

社内独自の用語や言い回しを取り入れた文書を生成するツールです。RAG(Retrieval Augmented Generation)方式と、単純な文章校正するように指示したプロンプトのみの実装をしてみました。

実装ポイント

RAGを使ったバージョンでは某巨大SI企業の社内メールの表現を校正ルールに追加しています、単純なプロンプトのみで文書校正をしました。 Wordファイルを読み込ませプレビュー表示し、校正が必要な箇所に赤字でコメントを追加しています。

活用例

データベースから作成する文書の関連文献を検索。その結果をプロンプトに反映させることで、文書校正よりも一歩進んだ具体的で専門性の高い文章を生成できるでしょう。

実運用を考えたときに欲しい機能

ここまで読んで、実際の文書校正の実際のシステムでは、校正結果のプレビューではコメントで追加するようしたり、プレビュー画面で編集したり、校正結果のWordファイルをDLする機能が欲しくなりますよね。履歴管理も欲しいかもしれません。 でも、これらの追加したいと思った機能は生成AIの機能でしょうか?違いますよね。多くは普通のWebシステムの領域になります。

グローバルミーティング用英文生成ツール

概要

学習したい英語フレーズと、関連資料のURLを組み合わせ、関連資料に関する学習したいフレーズを使った作成するツールです。グローバルなメンバーがいる社内ミーティングで使うことを想定しています。

実装ポイント

OpenAIのAPIが持つFunction callingの機能を使ってこの機能を実現しています。これは生成AIのモデルに、xxxメソッドがありこういう機能がありますよと伝えて、生成AIが必要であればxxxメソッドを呼んで下さい返ってくるので、xxxメソッド結果を生成AIに渡して再度実行し、最終的な出力結果を得るものです。

※ 実際のコードはlangGraphのエージェント機能を使って上記のするやり取りをラップしています。このあたりもライブラリを使う魅力でしょう。

利点

単語帳や熟語帳に載っている例文はどうしても自分ごとではないので覚えにくい、また覚えていても実際の英会話ではなかなか使えない。特にビジネス向けの英会話フレーズは簡単な単語の並びなのに馴染みが無いのでなかなか実践できない。

そこでミーティングで使う資料に関連した覚えたいフレーズに使う英文を生成すれば、即座に使えてこなれた発言ができるのです。

関連資料の内容は英語でも日本語でも問題なくその内容から英文を生成してくれます。生成AIの得意を活かしたツールになりました。

活用例

関連資料を社内の認証が必要なNotionやGoogle Docsに対応し、資料内のリンク先も読めるようにするとより実際の業務に使えそうです。学習したいフレーズの管理や学習の進捗理解度なども把握できると良いかもしれませんね。繰り返しになりますがコアの機能は生成AIが必要ですが、活用例を考えると既存のWebシステム的な機能を実装が必要なりますね。

当社の強み:Webサービス開発のノウハウが鍵

ここまで述べたように、事例の活用例を見ると生成AIを利用したサービス考えた場合、開発する箇所の多くは既存のWebサービスの開発と代わりはありません。当社、株式会社UZUMAKIは、先端技術と柔軟なギルド型チームで、既存システムの刷新やリファクタリングを着実に進める点が強みです。曖昧な要件をいい感じにタスクに落とし込み迅速かつ高品質な開発を実現しています。

生成AIの今後の予想される展望

  • AIエージェント
  • 各社多分に、多分にAIエージェントと歌って入るが、AIエージェントの定義が曖昧で営業的にAIエージェントと言い張っているが、AIエージェントとは計画、実行、評価。。。。などの定義が曖昧なところがある。

    また特定の特定の業務の場合はデータ入力の補助の法が良いのかも???

    生成AIを基盤とした自律エージェントの実現は、業務効率化のみならず、新たなビジネスモデル創出の可能性を秘めています。

まとめ

生成AIを活用したサービス構築において、技術そのものの革新だけでなく、Webサービス開発の基盤がいかに重要かを再認識する必要があります。

  • 技術融合の重要性
  • StreamlitやLangChain、LangGraphなどのツールを駆使することで、迅速なプロトタイピングと実運用システムの両立が可能になります。

  • 当社の優位性
  • 豊富なWebサービス開発の経験が、生成AI活用サービスの品質と信頼性を支える大きな強みとなっています。

  • 今後の展望
  • 多様な応用領域への拡大と、自律的AIエージェントの実現に向けた技術革新は、今後も継続的に注目される分野です。

以上のように、生成AIとWebサービス開発の融合は、今後の技術進化とビジネス展開において非常に大きなインパクトを持つと確信しています。今後もこの両領域の進化に注視し、最先端の技術で市場をリードしていく所存です.