logo

Timetable

Timetable
Timetable background1Timetable background3Timetable background3
10:00
Opening
20F #pyconjp_1
Opening Relay
20F #pyconjp_2
Opening Relay
4F #pyconjp_3
Opening Relay
4F #pyconjp_4
10:20
10:20
30min
【招待講演】PythonのUTF-8化
稲田 直哉
日本語
20F #pyconjp_1
10:20
30min
Re:PandasAI:生成AIがデータ分析業務にもたらすパラダイムシフト【増補改訂版】
Ryosuke Tanno
Data Science, AI
日本語
20F #pyconjp_2
10:20
30min
Pythonで 日本語処理 入門 〜フリガナプログラムを作ろう〜
Takanori Suzuki
Data Science, AI
日本語
4F #pyconjp_3
10:20
30min
Streamlining Testing in a Large Python Codebase
Jimmy Lai
DevOps, Testing, Documentation, Packaging
EN
4F #pyconjp_4
11:10
11:10
30min
Cloudflare Workers in Pythonでサーバーレスアプリケーションを作ろう
Ryuji Tsutsui
Web Applications
日本語
20F #pyconjp_1
11:10
30min
データフレームライブラリ徹底比較
桂川大輝
Others
日本語
20F #pyconjp_2
11:10
30min
Pythonの数学機能を学ぼう!その仕組みも学ぼう!
curekoshimizu
Python Features and Development
日本語
4F #pyconjp_3
11:10
30min
Unlocking Python's Core Magic
Wei Lee
Python Features and Development
EN
4F #pyconjp_4
11:40
Lunch Break
20F, 4F Track 1~4
12:40
12:40
30min
実例から学ぶ型ヒントの活用手法
Rei Suyama
Development Practices Using Python
日本語
20F #pyconjp_1
12:40
30min
「巨人の肩の上」で自作ライブラリを作る技術
石原祥太郎
Development Practices Using Python
日本語
20F #pyconjp_2
12:40
30min
Pythonを活用したLLMによる構造的データ生成の手法と実践
柴内一宏
Data Science, AI
日本語
4F #pyconjp_3
12:40
30min
Sleuthing in Cython: Wrapping and Debugging Legacy C Libraries for Python
Maryanne Wachter
Development Practices Using Python
EN
4F #pyconjp_4
13:30
13:30
30min
SQLModel入門 〜クエリと型〜
Mizuki Sato
Web Applications
日本語
20F #pyconjp_1
13:30
30min
Rustを活用したPythonライブラリの開発
Shota Kokado
DevOps, Testing, Documentation, Packaging
日本語
20F #pyconjp_2
13:30
30min
データサイエンスのフルサイクル開発を実現する機械学習パイプライン
Cristian Kamiya
Data Science, AI
日本語
4F #pyconjp_3
13:30
30min
Playing games in the browser with WASM
Neeraj Pandey, Manoj Pandey
Video, Music, Games, Illustration
EN
4F #pyconjp_4
14:20
14:20
30min
実践Dash - 手を抜きながら本気で作るデータ可視化Webアプリの基本と応用
Shinichi Nakagawa(@shinyorke)
Web Applications
日本語
20F #pyconjp_1
14:20
30min
Pythonによるイベントソーシングへの挑戦と現状に対する考察
Masanobu Naruse
Development Practices Using Python
日本語
20F #pyconjp_2
14:20
30min
PythonとOpenCVで楽しむ物体検出!
Lina Katayose
IoT, Hardware, Network
日本語
4F #pyconjp_3
14:20
30min
The Wheelhouse of Horrors
Laszlo Kiss Kollar
Development Practices Using Python
EN
4F #pyconjp_4
14:50
Coffee Break
20F, 4F Track 1~4
15:30
15:30
30min
WEBアプリケーションにおけるAWS Lambdaを用いた大規模な非同期処理の実践
Masataka Okudera
Web Applications
日本語
20F #pyconjp_1
15:30
30min
Pythonと相互運用可能な静的型付け言語Erg
Shunsuke Shibayama
Creating Libraries and Services
日本語
20F #pyconjp_2
15:30
30min
Pythonで3Dモデリングをしてみよう: CadQuery Basic
Hiroshi Sano
Video, Music, Games, Illustration
日本語
4F #pyconjp_3
15:30
30min
Why Knowing Cython Helps in Understanding Python: A Deep Dive into Cython & PVM
Abhik Sarkar
Python Features and Development
EN
4F #pyconjp_4
16:20
16:20
30min
DjangoとFastAPIによる実践認証技術
大島和輝
Web Applications
日本語
20F #pyconjp_1
16:20
30min
Pythonで3次元CGを作りたい人のためのPyVista入門
Tetsuo Koyama
Creating Libraries and Services
日本語
20F #pyconjp_2
16:20
30min
プロダクションでのPython非同期ユースケース - Trio/Trio-Utilを中心に
Junya Fukuda
IoT, Hardware, Network
日本語
4F #pyconjp_3
16:20
30min
Getting Started with Open Source Contributions
Stefanie Molin
Community, Education
EN
4F #pyconjp_4
17:00
17:00
15min
pytest プラグインを開発して DRY に自動テストを書こう
Atsushi Inutsuka
DevOps, Testing, Documentation, Packaging
日本語
4F #pyconjp_3
#pyconjp_3 Relay
4F #pyconjp_4
17:30
Keynote (Atsuo Ishimoto)
20F Track 1~2
Keynote Relay (English)
4F #pyconjp_3
18:25
PyCon JP Association Report
20F Track 1~2
18:40
Closing
20F Track 1~2
Pythonを活用したLLMによる構造的データ生成の手法と実践
柴内一宏
09/28 12:40 - 13:10 (Asia/Tokyo)
4F #pyconjp_3

大規模言語モデル(LLM)の進化は目覚ましく、その応用範囲は広がっています。しかし、LLMの出力を利用したアプリケーションの構築において、その出力のデータ内容やスキーマの制御が求められます。本セッションでは、Pythonを中間コードとして用いて、構造的データを効率的に生成する手法を紹介します。この手法は直接出力よりも反復的なデータや計算を含むデータ等により効力を発揮します。また、生成過程における、Pythonコードの安全な実行環境としてWebAssemblyを利用した方法も提案します。最後に、これらによって構築されたLLMアプリケーションのアーキテクチャと、実践的デモを実演します。


description
トーク詳細 / Description

近年、ChatGPTに代表される大規模言語モデル(LLM)の発展は目覚ましく、様々なタスクへの応用が期待されています。しかし、LLMのアプリケーションを開発する際、LLMが出力するデータの構造や型について制御する場面が多々あり、それについて悩んでいる開発者も多いと思います。

本セッションでは、これらの課題に対する解決策として、Pythonを中間コードとして用いる手法を紹介します。具体的には、LLMにPythonコードを生成させ、これを実行することによって、より正確なデータを生成する方法について説明します。

このアプローチにより、例えば以下の効能が得られます。

  • 反復的なデータを直接列挙するよりも、出力トークンの効率が向上し、レスポンス時間短縮が可能、
  • 数値や計算について、より厳密な結果が期待できる。
  • 時間や日付の計算が正確に行える。
  • データの変換処理(文字列置換など)をプログラムの処理として定義できる。

特に、ターゲット言語をPythonにすることで、Pythonのエコシステムを活用できる利点もあります。具体的には以下のような利点があります。

  • リストやネスト構造を含む複雑なデータ構造をdataclassとして表現可能。
  • f-stringによるコンパクトで柔軟な文字列フォーマット。
  • calendarパッケージ等、便利な標準ライブラリとの連携。
  • Pydanticなどを用いた結果のバリデーションの自動化、シリアライゼーション/デシリアライゼーションの自前実装が不要。

しかし、LLMが生成したコードの実行は危険なコードが出力されうるというセキュリティリスクが伴います。そこで、本セッションでは加えて、WebAssemblyによるサンドボックス化を用いた安全なコード実行環境も紹介します。WebAssemblyを用いることで、実行時間、メモリ、I/Oを制限し、安全性を確保しつつ、低レイテンシを実現します。また、dataclassのシリアライズ/デシリアライズによって、アプリケーションとサンドボックス間のデータ連携もシームレスに行うことができます。

本セッションでは、実用的なマーケティングアプリケーションの設定ルール生成を題材としたデモを行います。これは実際に自社のクラウドアプリケーションを例に取り、具体的なアーキテクチャを示します。 さらに、JSONの直接出力や他のプログラミング言語との比較実験を通じて、本手法の精度、レイテンシ、出力トークン量を評価し、その有効性を検証します。

このセッションを通して、参加者はPythonを活用したLLMによる構造的データ生成の手法とその実践的な構築方法について深く理解することができるでしょう。


柴内一宏
柴内一宏

大学院でプログラミング言語システムについて研究した後、データ活用企業であるブレインパッドに新卒入社。マーケティングツールである Rtoaster を中心に設計や開発を行う。最近はプロダクトにLLMを導入するための企画・開発を行っている。

PyCon2021において「Pythonのバリデーション定義からフロントエンドTypeScriptのコード生成」で登壇。