Slide 1

Slide 1 text

最新のAIツールは何を 解決しようとしているのか - Python エンジニアが取り組 むべき "越境" とは - 2024年10⽉17⽇ みんなのPython勉強会 #109 by Takahiro Ikeuchi

Slide 2

Slide 2 text

はじめに 1/3 - ChatGPTの登場 ChatGPTの登場以降、AIの利活⽤が社会で進んでいます。2022年11⽉に公開されたChatGPTは、その ⾃然な対話能⼒で世界中の⼈々を魅了し、瞬く間に話題となりました。 早いもので、GPT- の登場から1年半ほどが経ちました。

Slide 3

Slide 3 text

はじめに 2/3 - AIアプリの開発と運⽤ ChatGPTの登場は、AIの利⽤シーンを⾶躍的に広げ、2024年10⽉現在、商⽤のプロダクトにAIを本格 的に投⼊する動きが活発化しています。 このような状況の中で、AIを活⽤したシステムの開発や運⽤をサポートするエコシステムも進化を続け ています。 AI開発の効率化や安定的な運⽤を実現するためのツールやプラットフォームが次々と登場し、開発者や 運⽤担当者は、これらの技術を活⽤することで、より⾼度なAIシステムを構築することができるように なってきました。

Slide 4

Slide 4 text

はじめに 3/3 - Pythonエンジニアの役割 AI技術の発展に伴い、プログラマ不要論もささやかれる昨今、Python エンジニアはどのような課題に 取り組むとよいのでしょうか。AI技術は⽇々進化しており、誰でも簡単に利⽤できるツールやサービス も登場しています。 しかし、⾼度なAIシステムを開発し、社会実装するためには、エンジニアの専⾨知識やスキルが依然と して不可⽋です。 本講演では、PythonエンジニアがAIの進化をどのように捉え、どのような課題に取り組むべきかを考 察していきます。

Slide 5

Slide 5 text

⾃⼰紹介 - 池内 孝啓 ITベンチャー数社を経て、2011年3⽉に株式会社 ALBERTへ⼊社、2015年に執⾏役員として東証マ ザーズへのIPOを経験。2019年より現職。AIメン タルパートナー「アウェアファイ」の開発‧事業 責任者として、2020年5⽉にプロダクトをローン チ。2023年4⽉、 「アウェアファイAI構想」を⽴ち 上げ。 Go や Dart/Flutter、TypeScript/React などを得 意とし、オープンソース‧ソフトウェア関係のコ ミュニティの⽴ち上げや運営にも関わる。著書 に、 『改訂版 Pythonユーザのための Jupyter[実 践]⼊⾨』 、 『これからはじめる SQL ⼊⾨』などが ある。 株式会社Awarefy 取締役CTO @iktakahiro

Slide 6

Slide 6 text

Twitter Takahiro Ikeuchi / Awarefy CTO on Twitter / X Gamma により秒でスライドを完成させるぞ計画、⼀瞬で失敗に終わる。— Takahiro Ikeuchi / Awarefy CTO (@iktakahiro) October 16, 2024

Slide 7

Slide 7 text

⽤語の定義 AI OpenAI GPT-x シリーズを始めと する⼤規模⾔語モデル = LLM の 総称としてAIという⾔葉を⽤い ます。 AIアプリケーション AIの機能を組み込んだアプリケ ーションやサービス全般のこと を指します。 AI(アプリケーション開 発⽀援)ツール AIアプリケーションの開発や運 ⽤を⽀援するソフトウェア、サ ービス全般のことを指します。

Slide 8

Slide 8 text

AIアプリケーション開発と運⽤における課 題 - アウェアファイの事例から アウェアファイでは、2023年4⽉からプロダクトにAIを導⼊しました(当時、GPT- . Turbo) 。 商⽤環境でAIアプリケーションを運⽤する場合、従来のサービス同様、⾼い可⽤性を維持する必要があり ます。加えて、AI技術特有の課題が⽣まれています。 note(ノート) Awarefy AI を半年間運⽤してみて分かった OpenAI / LLM /… はじめに こんにちは。 @iktakahiro 池内です。 この記事は、昨今さ まざまな領域で存在感を増し続ける LLM およびその 周辺技術、そ …

Slide 9

Slide 9 text

Awarefy Developers アウェアファイ AI コーチングの裏側 / GPT-4 + Claude 3 … 概要 * AI メンタルヘルスアプリ Awarefy(以下、アウェアファイ) は、2024年4⽉9⽇に、 「AI コーチング」機能をリリースした * 「A… Amazon Web Services ⽣成 AI により、コーチング機能を実現。メンタルヘルス領… 「⼼の健康と成⻑を⽀えるデジタル‧メンタル‧プラットフォームを 実現する」をミッションに、AI メンタルパートナ […]

Slide 10

Slide 10 text

AI API の利⽤には(思ったより)コストがかかる OpenAI や Anthropic 社の提供するAIを利⽤するには、公式、または Amazon Web Service、Microsoft Azure、Google Cloud といったクラウドベンダの提供するAPIを利⽤することが最も⼿軽です。 APIの利⽤にはトークン数に応じたコストがかかります。サービスの規模、⼊出⼒の量によるが、概ね無視 できないコストがかかります。 OpenAI 料⾦ シンプルでフレキシブル。使った分だけお⽀払い。

Slide 11

Slide 11 text

トークン量の予測は(思ったより)困難 また、トークン = ⽂字数ではないため、正確な予測が困難という点もAI API の特徴です。そのため、モニ タリングが重要です。 platform. openai. com OpenAI Platform Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI' s platform.

Slide 12

Slide 12 text

AIは(思ったより)遅い(?) AIがテキストや画像、⾳楽などを⽣成する際、⽣成にかかる時間は、⽣成する量や品質に⽐例します。⾼ 度なタスクを⾏うモデルほど処理速度が遅くなる傾向にあります。短⽂の⽣成には1秒から数秒、⻑⽂の⽣ 成には5秒から10秒以上かかります。 最新のGPT- o miniなどのモデルは処理速度が⽐較的速いと⾔えますが、APIを同期リクエストで呼び出す と、数秒から数⼗秒の待ち時間が発⽣し、サービスの処理能⼒に影響を与える可能性があります。AIをア プリケーションに組み込む際は、⾮同期処理やリトライの仕組みを検討する必要があります。

Slide 13

Slide 13 text

AIのRate Limit RPM リクエスト数制限 1分間のAPI呼び出し回数の上限 TPM トークン数制限 1分間の処理トークン数の上限 AI APIを⻑期的に利⽤していると、時間帯によって応答性能が変動したり、サービスダウンが発⽣するこ とがわかります。また、APIやモデルごとに定められたリクエスト数やトークン数の上限を超えると、処理 を受け付けてもらえなくなります。これらの制約を考慮せずにAIアプリケーションを構築すると、単⼀障 害点を抱えたままサービスを運⽤することになってしまいます。そのため、AI APIの利⽤にあたっては、バ ックアッププランを⽤意しておくことが重要です。

Slide 14

Slide 14 text

AI の可⽤性 AIアプリケーションの開発と運⽤においては、AIの可⽤性も重要な課題となります。AIサービスの停⽌や 遅延は、アプリケーションの機能に⼤きな影響を与える可能性があります。開発者は、AIの可⽤性を確保 するための対策を講じる必要があります。 また、AIサービスの料⾦体系も考慮する必要があります。多くのAIサービスでは従量課⾦が採⽤されてお り、予期せぬ利⽤量の増加によってコストが⾼騰する可能性があります。開発者は、コストを適切に管理 するための仕組みを設けることが重要です。

Slide 15

Slide 15 text

AIツール概況 ここまで、AIアプリケーション運⽤者の視点からみる課題についてお話ししました。次に、話題をAIアプ リケーション開発⽀援ツールに切り替えます。開発⽀援ツールはさまざまなものが登場しているのです が、主要なものをピックアップしたうえで、簡単にカテゴリわけすると次のページのようになります。

Slide 16

Slide 16 text

AIアプリケーション開発⽀援ツール(独断と偏⾒で抜粋) 開発フレームワーク LangChain Dify LangFlow モニタリング‧オブザーバビリティ LangSmith Langfuse API抽象化‧統合 LiteLLM 評価‧テスト LangSmith Evaluation Langfuse

Slide 17

Slide 17 text

LangChain おそらく最も有名なAI関連ライブラリのひとつにLangChainがあります。 www. langchain. com LangChain LangChainʼ s suite of products supports developers along each step of their development journey.

Slide 18

Slide 18 text

OSSとしてのLangChain LangChain はMITライセンスで公開されているOSSです。 プライマリの実装はPythonで⾏われています。TypeScript版の LangChain.js もあります。 GitHub GitHub - langchain- ai/ langchain: Į Build context- a… Į Build context- aware reasoning applications. Contribute to langchain- ai/ langchain development by creating an account on…

Slide 19

Slide 19 text

LangChain の特徴 統⼀されたインターフェ ース LangChainは、複数のLLMを共 通のインターフェースで扱うこ とができます。 会話メモリ管理 LangChainは、会話の履歴を保 持し、⾃然なやり取りを実現し ます。 エージェント機能 LangChainは、LLM、データ取 得、処理などを組み合わせて複 雑なタスクを実⾏できます。

Slide 20

Slide 20 text

LangChainを利⽤すると、異なるLLMであっても、統⼀的なインターフェースで扱えることが特徴です。 from langchain_core.messages import HumanMessage, SystemMessage messages = [ SystemMessage(content="ユーザーの⼊⼒する⽇本語のテキストを英語に翻訳してください"), HumanMessage(content="こんにちは!"), ] model.invoke(messages) # -> Hello! いっぽうで、単純にOpenAIのRESTFul API を利⽤するだけであれば、LangChainはオーバースペックであ る可能性があります(つづく →

Slide 21

Slide 21 text

公式Python SDKを利⽤した場合: from openai import OpenAI client = OpenAI() stream = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "こんにちは!"}], stream=True, ) for chunk in stream: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end="")

Slide 22

Slide 22 text

RESTFul APIを直接利⽤した場合: import httpx data = { "model": "gpt-4o", "messages": [{"role": "user", "content": "こんにちは!"}]} response = httpx.post(url, headers=headers, json=data) if response.status_code == 200: result = response.json() print("Response:", result['choices'][0]) else: print("Error:", response.status_code, response.text)

Slide 23

Slide 23 text

Dify Difyは、AIアプリケーション開発を簡略化するオープンソースのプラットフォームです。 dify. ai Dify. AI · The Innovation Engine for Generative AI Applic… The next-gen development platform - Easily build and operate generative AI applications. Create Assistants API and GPTs…

Slide 24

Slide 24 text

Difyの特徴 ノーコード開発: 直感的なインターフェースを備え、プログラミングスキルがなくてもドラッグ&ドロ ップでAIアプリを構築できます RAGエンジン搭載: Retrieval-Augmented Generation (RAG) エンジンを活⽤し、独⾃のドキュメント をもとに回答するチャットボットなどを作成できます 外部ツール連携: Google検索、Slack、DALL-E、Stable Diffusionなどの外部ツールと連携できます

Slide 25

Slide 25 text

OSSとしてのDify Difyの運⽤主体は有料のクラウドサービスを提供していますが、DifyのソースコードはOSSで公開されて いるため、セルフホスティングして運⽤することが可能です。 GitHub GitHub - langgenius/ dify: Dify is an open- source LLM a… Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG…

Slide 26

Slide 26 text

LiteLLM LiteLLMは、多数の⼤規模⾔語モデル(LLM)を統合的に管理するためのプロキシサーバーを提供するサ ービスです。 www. litellm. ai LiteLLM LiteLLM handles loadbalancing, fallbacks and spend tracking across 100+ LLMs. all in the OpenAI format

Slide 27

Slide 27 text

LiteLLMの特徴 統⼀されたインターフェース: LiteLLMは、OpenAI、Azure、Anthropic、Cohereなど100以上の異な るLLMプロバイダーのAPIを、OpenAI形式の統⼀されたインターフェースで呼び出すことができます。 負荷分散とフォールバック: 複数のLLMにわたる負荷分散やフォールバック処理を簡単に実装できま す。また、異なるLLMの使⽤コストを追跡‧管理し、アラートを設定することもできます。 オープンソースとクラウド: LiteLLMはオープンソースで公開されているため、セルフホスティングを することも、有料のクラウド版を利⽤することもできます。

Slide 28

Slide 28 text

OSSとしてのLiteLLM Dify同様、LiteLLMもOSSで公開されているため、セルフホスティングをすることも、有料のクラウド版 (価格未公表)を利⽤することもできます。 GitHub GitHub - BerriAI/ litellm: Python SDK, Proxy Server ( LLM… Python SDK, Proxy Server (LLM Gateway) to call 100+ LLM APIs in OpenAI format - [Bedrock, Azure, OpenAI, VertexAI, Cohere,…

Slide 29

Slide 29 text

AIツール概況のまとめ AIアプリケーション開発⽀援ツールは、以下のように問題に 対する課題を解決しようとしています。 複数LLMの利⽤ => 抽象化APIの提供 コスト管理の複雑性 => モニタリング機能の提供 可⽤性の課題 => 負荷分散や障害対策機能の提供

Slide 30

Slide 30 text

AIとPython 現在、第三次Pythonブームが来ている PyData 黎明期 Jupyter Notebook や Pandas など。2010年代前半〜 ディープラーニング最盛期 TensowFlow や PyTorch など。2010年代中盤〜 AI/LLM時代 LangChain や Dify など。 2023年〜

Slide 31

Slide 31 text

AIツールの実装⾔語 ツール 主な実装⾔語やフレームワーク LangChain Python, (TypeScript 版あり) Dify Python, FastAPI, TypeScript, Next.js LiteLLM Python, FastAPI LangFlow Python, FastAPI, TypeScript, React バックエンドは FastAPI、フロントエンドは React(Next.js)という構成が多い。

Slide 32

Slide 32 text

Python エンジニアが取り組むべき "越境" とは

Slide 33

Slide 33 text

⼤AI時代に備える 私⾒ : プログラマは不要にならないと考えるが... より抽象度の⾼い、正解のない仕事に取り組むことが求められるようになる。 あるべきコードベースの定義、AIに任せる部分と任せない部分の整理など、よりアーキテクト的な動き が求められる 責任をと(れ)るのは⼈間。セキュリティも含めた品質に対する責任は⼈間が⾏う。AIの⽣成したコー ドをレビューできる技量が必要 正解の⾃明な抽象度の低いタスクはAIの得意分野。コピー&ペースト‧エンジニアリング程度のタスクはAI に置きかえられていく(すでに置きかえられている) 。

Slide 34

Slide 34 text

⾔語にこだわらず越境する AIは翻訳が得意。プログラミング⾔語間のトランスパイルも得意。ひとつ得意な⾔語があれば、他の⾔語 の理解、習得、 (理解しないままも含む)の変換の障壁が劇的に下がっています。 前述の技術スタックを考えると、TypeScript や Reactなど、Webフロントエンド側に越境していくのもひ とつの⼿だと考えます。

Slide 35

Slide 35 text

AI時代をメタ的に捉える - 1 AIで労働が置きかえられるはずが、ツールがサービスが爆発的に増えている現実をどう捉えるか?

Slide 36

Slide 36 text

AI時代の新たな課題 LLMOps プロンプトエンジニアリング LLMモニタリング LLM評価 ⾮構造データの活⽤(ビッグデータ 3.0 くらい…? 適当 テキスト 画像 ⾳声 etc...

Slide 37

Slide 37 text

AI時代をメタ的に捉える - 2 AI時代の課題を解決するOSSがPythonで実装されている流れをどう捉えるか?

Slide 38

Slide 38 text

AIツールのトレンドをウォッチする LangChain、Dify を始めとする主要なAIツールの実装がPythonである事実 広義のAI利⽤がLLM中⼼になっていくことを考えると、Pythonである蓋然性が必ずしも強くあるとは いえない可能性 周辺や前後のプロセスでPythonのデータ分析エコシステムが活かせる可能性は⾼い

Slide 39

Slide 39 text

まとめ

Slide 40

Slide 40 text

Python エンジニアが取り組むべき "越境" とは AIの課題解決と新た な課題 AIはさまざまな課題解決を ⼤きく前進させてきました が、AI⾃体があらたな論点 や課題を⽣み出している。 エンジニアの役割 そうした課題も含めて、引 き続き課題解決をしていく のがエンジニアの仕事では ないか。 AIツールの活⽤ LangChain やDifyなど、AI x Pythonのツールが⽣み出 されています。Python に 浸かるもよし、越境してス キルの幅を広げるもよし。