Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Semantic KernelとStructured OutputsでAI Orchestra...

takas
October 26, 2024

Semantic KernelとStructured OutputsでAI Orchestrationしてみる

2024年10月の.NETラボで発表した資料です。
デモのコード:https://github.com/Takas0522/dotnetlab-demos/tree/main/2024/10

takas

October 26, 2024
Tweet

More Decks by takas

Other Decks in Technology

Transcript

  1. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる 本日のゴール • AIからの出力でJSON構造体の出力ができるか確認する • Semantic

    KernelでWeb APIとの連携について確認する • AI+Web APIでさらに便利にAIを活用できることを確認する
  2. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる AIのみで業務を動かすことができるか? • 答えはNoだと思っている • 業務の補助はできるかもしれないが業務そのものは厳しそう

    • 僕たちのお仕事はいろいろなものに縛られている • それは統制という名目の制限かもしれない • それは整合性という名目の制限かもしれない • 色々と細かくはあり鬱陶しいものだが必要なこと • たまに意味が分からない縛りもあるが… • そもそも100%の精度はAIに求めることはできない
  3. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる あゝ複雑怪奇な業務システムな世界! • 縛りを表現している • 権限、トランザクション、データフロー、ロック…

    • ありとあらゆる方法で業務上の制限やフローを表現している 業務上必要な権限 社内ルール 更新順序 依存関係 業務 表現 業務システム
  4. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる AIとWeb API(AI Orchestration)の世界 • クエリ生成とかRAGって多分本質的じゃないという認識

    • 個人的な見解(便利だし重要な要素だとは思いつつも • 僕らシステム屋が相手にしたい領域はおそらく違う • 生成されたクエリやRAGが業務上正しい状態か担保したい • 見ていいデータ?正しい更新方法?… • 業務ロジックは既存の表現をラップしたAPIを使いたい • APIの中でもAIから扱いやすいのはWeb APIだと思っている 業務システム AI 業務ロジック 利用 利用
  5. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる 重要性を増していく認証と認可。特に認可。 • 認証と認可 • 認証:あなたは誰か?

    • 認可:あなたは何ができるか? • AI Orchestrationする場合認可の考え方が特に重要になるはず AI 認 証 業務システムA 業務システムB M365 SaaS 認 可 認 可 認 可 認 可
  6. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる 認可はどのように重要になるのか • 見えてはいけないものが見える可能性 • できてはいけないことができるようになる可能性

    • 工夫ではなく統制として、実装上の表現として 制限と統合を実施するために認可が必要になる • Graph的には委任された許可と同様 あくまでアプリではなく人と同じになるという認識が大事そう
  7. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる AIとWeb API • 複雑な世界は複雑なことが得意なものにまかせよう •

    AIは簡素化されたIFを介して実行を行うだけにしたい • 複雑な処理はAIにさせない • 参照や登録の権限などはいわゆるスーパーユーザーにならない ように注意が必要 • 業務ロジックで組まれているなら乗っかる。ないなら考慮する。
  8. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる パターン1JSONスキーマを指定する方法 • ChatResponseFormatを作成 • jsonScemaを作成

    • System.Text.Jsonのエクスポート使えば簡単にできるかも? • 作成したResposeFormatを利用 • 正直あまり使う方法ではないと思う
  9. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる まとめ • AIからの出力でJSON構造体の出力ができるようになった • Semantic

    Kernelもこれに対応した • Semantic KernelでWeb APIとの連携について • Web APIで必要な構造体の状態を担保しつつAIでタスク実行できる • プラグインを利用しつつAIをさらに便利に使えるようになった • AI+Web APIでさらに便利にAIを活用できることを確認できた
  10. Takas(@DevTakas) Semantic KernelとStructured OutputsでAI Orchestrationしてみる 参考文献 • Using JSON Schema

    for Structured Output in .NET for OpenAI Models • https://devblogs.microsoft.com/semantic-kernel/using-json-schema-for-structured-output-in-net-for- openai-models/ • Introducing Structured Outputs in the API • https://openai.com/index/introducing-structured-outputs-in-the-api/ • Add native code as a plugin • https://learn.microsoft.com/en-us/semantic-kernel/concepts/plugins/adding-native-plugins • On-behalf-of flows with MSAL.NET • https://learn.microsoft.com/en-us/entra/msal/dotnet/acquiring-tokens/web-apps-apis/on-behalf-of-flow • Introduction to Semantic Kernel • https://learn.microsoft.com/en-us/semantic-kernel/overview/ • Function calling with chat completion • https://learn.microsoft.com/ja-jp/semantic-kernel/concepts/ai-services/chat-completion/function-calling/ • これから始める Semantic Kernel【2024年7月版】 • https://qiita.com/takashiuesaka/items/299c64bb3c5873a470b9