Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Discord Bot with AI -for English learners-
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takaaki Suzuki
November 29, 2024
Programming
1
330
Discord Bot with AI -for English learners-
KK Talking が運営する Discord サーバーである「KK LOUNGE」に導入した「AI による英文自動添削 Bot」を紹介しました。
Takaaki Suzuki
November 29, 2024
Tweet
Share
More Decks by Takaaki Suzuki
See All by Takaaki Suzuki
今日からできる!簡単 .NET 高速化 Tips -2024 edition-
xin9le
9
11k
.NET Night Party@品川
xin9le
1
480
Other Decks in Programming
See All in Programming
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
140
The free-lunch guide to idea circularity
hollycummins
0
290
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.3k
ロボットのための工場に灯りは要らない
watany
11
3k
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
150
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
150
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
570
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
2
130
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
300
AI 開発合宿を通して得た学び
niftycorp
PRO
0
160
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
490
How to stabilize UI tests using XCTest
akkeylab
0
130
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
Building the Perfect Custom Keyboard
takai
2
710
Site-Speed That Sticks
csswizardry
13
1.1k
Documentation Writing (for coders)
carmenintech
77
5.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Scaling GitHub
holman
464
140k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
640
YesSQL, Process and Tooling at Scale
rocio
174
15k
30 Presentation Tips
portentint
PRO
1
260
Design in an AI World
tapps
0
170
Transcript
dotnet new 2024/11/29 (金) 鈴木 孝明 Discord Bot with AI
- for English learners -
Name 鈴木 孝明 a.k.a @xin9le Work Application Engineer Award Microsoft
MVP (2012/7 -) Web Site https://about.xin9le.net About
.NET 9 Contributor https://github.com/dotnet/runtime/pull/96574
英語系インフルエンサー SNS 総フォロワー数 : 約 65 万人 トロントに移住した元同僚の活動名義 KK LOUNGE
英語学習者のための Discord コミュニティ 彼の情熱だけで運営してて、完全無料 KK Talking
英語で書く日記 毎日お題が出る お題に沿った短文日記を書く練習 添削して欲しい 英検 1 級 / ILETS 8.0+
な人でも流石に都度添削してあげられない フィードバックを自動化したい Daily Journal
百聞は一見に如かず Demo
None
つまり今日の本題 Key points
ドキュメントに書いてないことが多い GitHub Copilot や Perplexity AI などに聞きながら実装しよう 知見がネット上に散らばってるにときは AI の補助が特に役立つ
やりたいことは大抵できる Discord 内にある情報のほとんどにアクセスできるし、干渉もできる 概ね「作り方がわからない」だけなので、簡単に諦めず AI に聞こう Discord.NET は初見殺し
メッセージ本文の制限は 2000 文字 Bot だからと言って通常ユーザーと制限は変わらない 添削結果は添削対象の文章より長くなるので簡単に抵触する Embed に分割して回避 Embed の文字数制限
: 4096 文字/embed 本文とは切り離されて計算される Discord の文字数制限を突破する 4096 4096 2000
プロンプトで制御 最もシニカルで、最もプリミティブで、そして最もレガシーな方法 AI の「お気持ち」を信じるしかなく、非常に不安定な挙動をする ChatGPT の出力を操る (Lv.1) あなたは英語と日本語が堪能な翻訳家です。 下記の条件に従って、与えられた英文を添削してください。 #
出力フォーマット { "comment": "<ここに英文を読んだ感想を出力>", "revised": "<ここに添削結果を出力>", "feedbacks": [ "<ここに添削内容を箇条書きで出力>" ] } こちらが添削結果です。 ```json { "comment": "", "revised": "", "feedbacks": [ "" ] } ``` 何か追加の情報は必要ですか? Parse できんやろ…
JSON Mode の利用 JSON 形式で返答することを強制できる Schema の指定はプロンプトで頑張る ChatGPT の出力を操る (Lv.2)
あなたは英語と日本語が堪能な翻訳家です。 下記の条件に従って、与えられた英文を添削してください。 # 出力フォーマット { "comment": "<ここに英文を読んだ感想を出力>", "revised": "<ここに添削結果を出力>", "feedbacks": [ "<ここに添削内容を箇条書きで出力>" ] } { "comment": "", "revised": "", "feedback": "" } お願い Schema 守って… "response_format": { "type": "json_object" }
Structured Outputs の利用 指定の JSON Schema を守ることを保証 確実に Parse できるので安定性爆上げ
ChatGPT の出力を操る (Lv.3) あなたは英語と日本語が堪能な翻訳家です。 下記の条件に従って、与えられた英文を添削してください。 # 出力方法 - 英作文を読んだ感想を `comment` プロパティに出力 - 添削結果を `revised` プロパティに出力 - 添削内容を `feedbacks` プロパティに箇条書きで出力 { "comment": "", "revised": "", "feedbacks": [ "" ] } "response_format": { "type": "json_schema", "json_schema": "..." } 現代はこれ一択
C# の型情報から JSON Schema を生成 JsonSchemaExporter JsonSchemaExporter.GetJsonSchemaAsNode ( JsonSerializerOptions.Default, typeof(Person),
exporterOptions: new() { TreatNullObliviousAsNonNullable = true, } ) .ToJsonString(); .NET 9+ public class Person { public required string Name { get; init; } public DateOnly? Birthday { get; init; } } { "type": "object", "properties": { "Name": { "type": "string" }, "Birthday": { "type": ["string", "null"], "format": "date" } }, "required": ["Name"] }
Content Filter を考慮 有害なメッセージと判断された場合への対応は必須 HTTP Status Code 400 や例外を捕捉して適切に処理すべし ユーザー入力は未知
Enjoy AI programming using C#!! Thank you