Slide 1

Slide 1 text

1 LLMシステム開発 Tips集 ※解釈しやすいよう抽象度の高い表現をしている箇所や個人的な見解を含みます。Microsoftサービスについての正確な情報は公式ドキュメントをご参照ください。 Hirosato Gamo (Microsoft Cloud Solution Architect)

Slide 2

Slide 2 text

2 @hiro_gamo Azure OpenAI Champ。大手システムインテグレータにてキャリアをスタート。自動車業界の DMSデータ活用基盤のコンサルティングおよび開発や、エンタープライズブロックチェーンを活用 した異業種間データ流通プラットフォームの立ち上げなどを担当。数年間、データサイエンティス トとして社会インフラ関連企業を対象にしたデータ分析および機械学習システムの開発を経て、 現在MicrosoftにてChatGPTなどAzure AI導入の技術支援や、SNSや外部セミナー でのGPT開発のEvangelist活動に従事。 著書に「Azure OpenAI ServiceではじめるChatGPT/LLMシステム構築入門」 SpeakerDeckにおいて「ChatGPT - Azure OpenAI大全」などの資料が 「2023 年に最も閲覧されたデッキ 25 選」にランクイン。 HIROSATO GAMO Microsoft Japan Co., Ltd. Cloud Solution Architect (Data & AI) About me 2023 - Most Viewed Decks (speakerdeck.com)

Slide 3

Slide 3 text

3 Prompting の最新 Tips

Slide 4

Slide 4 text

4 GPT のテキスト生成時の影響要素 学習データ プロンプト 生成済テキスト GPT 学習データ プロンプト 学習(ファインチューニング含む)によって獲得される。 ChatGPTではインターネット上のテキストデータなどがこれにあたる。 いわば言語生成の基礎能力とも表現できる。 GPTに対する入力のこと。 どのような出力をさせるかのコントロールが可能。検索結果や会話履歴 などの付加情報や、どんな振る舞いをさせるかの指示もこれに含まれる。 生成済テキスト 直前までの自身のテキスト生成結果 従来の機械学習モデルには基本的に存在しなかった要素 適切なテキスト生成のためには、良い学習がされたモデルだけでなく、そのモデルへの指示やハンドリングが大きく影響する。

Slide 5

Slide 5 text

5 System Prompt は構造化・再利用を考慮せよ 書く場所を明確にすることで、分かりやすいだけでなく複数人の開発時の保守性や、テストのしやすさなどに大きく寄与する。 特に変更するとシステム連携に影響が出る場所は安易に修正できないため明確化しておく必要がある。 # **Role** {LLMに求める役割} # Your task ## Progression {タスクの解き方の手順や進め方。厳密な進め方が決まっていない場合は省略したりRoleに含めてしまう} ## Input {インプットの想定} ## **Output** {アウトプットの想定} ### Output policy {アウトプットの際のルール} ## Tools {使えるFunctionなどの呼び出しに関する注意} # Prerequisites {前提情報やFAQなど} 構造化したシステムプロンプト JSONモードを使う場合は安易な変更は不可 Toolsは定義やルールを再利用するケースが多い

Slide 6

Slide 6 text

6 Prompt Store を作って複数のエージェントでプロンプトの部品を共有 マルチエージェント構成を取る場合、複数のAgentで同一のプロンプトを部分的に利用することがある。 修正削除を一括管理するようなデータベースなどの仕組みが必要 Agent A Agent B Prompt Store # Role {common_role} # Your task Progression {task_a} # Output policy {common_policy} # Tools {tool_a}, {tool_b}, {tool_c} # Role {common_role} # Your task Progression {task_b} # Output policy {common_policy} # Tools {tool_a}, {tool_b} # Role {common_role} # Your task Progression {task_c} # Output policy {common_policy} # Tools {tool_a}, {tool_c} 最終的なプロンプトはマークダウンでも、 保存はJSONとしておくなど Agent C

Slide 7

Slide 7 text

7 Lost in the Middleに配慮したプロンプトづくり ① 先頭の方はよく覚えてる ② 先頭を過ぎるとかなり忘れてる ③ ②よりはマシだが結構忘れてる ④ 1番はっきりと覚えている System Prompt Few shot User Prompt Assistant Answer User Prompt Assistant Answer User Prompt Assistant Answer User Prompt Assistant Answer LLMの会話ではSystem Promptから会話履歴までを全て入力することになるが、一般的にLLMは序盤と終盤ほど解釈性が高く、 中盤は忘れてしまう傾向が強い。どれくらいまで解釈性を保てるかはモデル性能によって異なる。 いわゆる「直前の内容」は強く覚えてるので、LLMの回答フォーマットに敢えて重要な情報を毎回出力させるテクニックもある。 [2402.14848] Same Task, More Tokens: the Impact of Input Length on the Reasoning Performance of Large Language Models (arxiv.org) [2307.03172] Lost in the Middle: How Language Models Use Long Contexts (arxiv.org)

Slide 8

Slide 8 text

8 Lost in the Middleに配慮したLLMづくり 会話履歴のコントロールや情報の配置場所により、挙動が変化することを意識したい [2402.14848] Same Task, More Tokens: the Impact of Input Length on the Reasoning Performance of Large Language Models (arxiv.org) [2307.03172] Lost in the Middle: How Language Models Use Long Contexts (arxiv.org) System Prompt Few shot User Prompt Assistant Answer User Prompt Assistant Answer User Prompt Assistant Answer User Prompt Assistant Answer 重要情報の 順序考慮 会話履歴の 適度な圧縮 永続化させたい 情報の再配置 システムプロンプトが肥大化する場合には、守って ほしいルールや重要な情報はなるべく上位に書く。 もしくは必ずルールを復唱させてから回答に入る。 肥大化した会話履歴を適度に要約するか、切り 捨てる。この手法はトークン節約の側面が強かった が、精度の面でも重要。 ユーザの重要なキーワードやRAGで取得した情報を 永続化させたい場合はSystem Promptへ。 逆に要らない情報は安易に履歴に残さない。

Slide 9

Slide 9 text

9 プロンプトの精度向上、ほとんど CoT の亜種 GPTは特に直前に出力した内容に強く影響を受ける、 「回答に必要な内部知識や要約を敢えて出力させ、直前の情報に再配置する」ことは常に考えた方が良い ステップバックプロンプト 知識生成プロンプト Recursively Criticizes and Improves (RCI) GPTに問い合わせに関する内部記憶を一旦列挙させた上で、 最終回答にその情報を活用させる手法 2110.08387 (arxiv.org) GPTの出力をGPT自身に吟味させて、修正させる考え方。 繰り返し実行することで出力がブラッシュアップされる。 特にプログラミングコードなどが動作するように用いられることが多い。 2303.17491 (arxiv.org) 一般的な背景知識や解き方を提示してから、本来の問題を解決するprompting。 [2310.06117] Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models (arxiv.org)

Slide 10

Slide 10 text

10 JSON出力時の注意点 JSON出力は有効な手段だが、出力の順序を考慮したり無駄を省くことでより良い出力が得られやすい { “id”: “12345”, “user_impression”: 4, “short_text”: “2023年のMVPは大谷翔平選手。", “short_text_in_en": “Shohei Ohtani was the MVP in 2023.”, “category”: [ {“category_label”: “野球”, “category_description”: “~~~~~”}, {“category_label”: “野球”, “category_description”: “~~~~~”}, … } 出力JSON

Slide 11

Slide 11 text

11 JSON出力時の注意点 JSON出力は有効な手段だが、出力の順序を考慮したり無駄を省くことでより良い出力が得られやすい { “id”: “12345”, “user_impression”: 4, “short_text”: “2023年のMVPは大谷翔平選手。", “short_text_in_en": “Shohei Ohtani was the MVP in 2023.”, “category”: [ {“category_label”: “野球”, “category_description”: “~~~~~”}, {“category_label”: “野球”, “category_description”: “~~~~~”}, … } 出力JSON ➢ LLMで出力する必要が無いプロパティは出力させない方が良い

Slide 12

Slide 12 text

12 JSON出力時の注意点 JSON出力は有効な手段だが、出力の順序を考慮したり無駄を省くことでより良い出力が得られやすい { “id”: “12345”, “user_impression”: 4, “short_text”: “2023年のMVPは大谷翔平選手。", “short_text_in_en": “Shohei Ohtani was the MVP in 2023.”, “category”: [ {“category_label”: “野球”, “category_description”: “~~~~~”}, {“category_label”: “野球”, “category_description”: “~~~~~”}, … } 出力JSON ➢ プロパティ間で関連性の無い出力は独立させた方が速度、精度面で有効

Slide 13

Slide 13 text

13 JSON出力時の注意点 JSON出力は有効な手段だが、出力の順序を考慮したり無駄を省くことでより良い出力が得られやすい { “id”: “12345”, “user_impression”: 4, “short_text”: “2023年のMVPは大谷翔平選手。", “short_text_in_en": “Shohei Ohtani was the MVP in 2023.”, “category”: [ {“category_label”: “野球”, “category_description”: “~~~~~”}, {“category_label”: “野球”, “category_description”: “~~~~~”}, … } 出力JSON ➢ 出力の長さや言語などの指定をプロパティ名に 入れ込むことで指示を忘れにくい。 余計なしゃべりも抑制できる。

Slide 14

Slide 14 text

14 JSON出力時の注意点 JSON出力は有効な手段だが、出力の順序を考慮したり無駄を省くことでより良い出力が得られやすい { “id”: “12345”, “user_impression”: 4, “short_text”: “2023年のMVPは大谷翔平選手。", “short_text_in_en": “Shohei Ohtani was the MVP in 2023.”, “category”: [ {“category_label”: “野球”, “category_description”: “~~~~~”}, {“category_label”: “野球”, “category_description”: “~~~~~”}, … } 出力JSON ➢ ネストが多いJSONは避ける

Slide 15

Slide 15 text

15 RAG の最新 Tips

Slide 16

Slide 16 text

16 1. 機械学習 ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.1 教師あり学習 ~~~~~~~~~~~~~~~~~~~~~~~~ Fig.1 XXXXXX ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ 1.2 教師なし学習 ~~~~~~~~~~~~~~ Table1 XXXXXX ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ 図の画像 # A B C ① ~~~ ~~~ ~~~ ② ~~~ ~~~ ~~~ ③ ~~~ ~~~ ~~~ 元となるドキュメント Read分析 ドキュメント情報の抽出は GPT-4o と OCR 情報を組み合わせる Azure Document Intelligence 元のドキュメントはAzure Document Intelligenceでマークダウン化が可能。図も検出できるのでGPT-4Vなどと組み合わせ情報を抽出。 "lines": [ { “content”: “1. 機械学習” "polygon": [… … Azure OpenAI マークダウン化の指示

Slide 17

Slide 17 text

17 前ページの履歴を残しながら解析することでページ間のつながりを配慮 前のページの解析結果は章構成の把握の上で重要な情報となるため、一定のページ数は残した上で解析することで一貫性を維持 1.3 強化学習 ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. 統計解析 ~~~~~~~~~~~~~~~~~~~~~~~~ 2.1 回帰分析 ~~~~~~~~~~~~~~ Table2 XXXXXX ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ # A B C ① ~~~ ~~~ ~~~ ② ~~~ ~~~ ~~~ ③ ~~~ ~~~ ~~~ マークダウン化の指示 # 1. 機械学習 ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ## 1.1 教師あり学習 ~~~~~~~~~~~~~~~~~~~~~~~ { “title”: “Fig.1 XXXXXX” “diag_info”: “~~~~~~~~~~~~~~~” “image_file_path”: “~~~~~~~~” } ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ## 1.2 教師なし学習 ~~~~~~~~~~~~~~ | # | A | B | C | | - | --- | --- | --- | | ① | ~~~ | ~~~ | ~~~ | | ② | ~~~ | ~~~ | ~~~ | | ③ | ~~~ | ~~~ | ~~~ | Table1 XXXXXX ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ## 1.3 強化学習 ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ # 2. 統計解析 ~~~~~~~~~~~~~~~~~~~~~~~ ## 2.1 回帰分析 ~~~~~~~~~~~~~~ | # | A | B | C | | - | --- | --- | --- | | ① | ~~~ | ~~~ | ~~~ | | ② | ~~~ | ~~~ | ~~~ | | ③ | ~~~ | ~~~ | ~~~ | Table2 XXXXXX ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ 前ページからの流れの踏襲

Slide 18

Slide 18 text

18 表形式はMarkdownでなくJSONが有効 マークダウン形式への変換は多くの場合、上手くいく。一方でカラム名構成を上手く反映できないときがある Azure OpenAI マークダウン化の指示 列がおかしい

Slide 19

Slide 19 text

19 表形式はMarkdownでなくJSONが有効 マークダウン形式への変換は多くの場合、上手くいく。一方でカラム名構成を上手く反映できないときがある Azure OpenAI JSON化の指示 [ { "Group": "A", "Country": "America", "Estimated Economic Size (GDP)": "Largest", "Future Prospect Assessment": "High", "Median Annual Income($)": 74580, "Subsidies": { "Income less than 3000$/month": true, "Income 3000$/month or more": false } }, … カラムをきちんと階層化出来ている

Slide 20

Slide 20 text

20 検索対象は必ずしもチャンクした本文ではない 元のドキュメントはAzure Document Intelligenceでマークダウン化が可能。図も検出できるのでGPT-4Vなどと組み合わせ情報を抽出。 # 1. 機械学習 ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ## 1.1 教師あり学習 ~~~~~~~~~~~~~~~~~~~~~~~ { “title”: “Fig.1 XXXXXX” “diag_info”: “~~~~~~~~~~~~~~~” “image_file_path”: “~~~~~~~~” } ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ ## 1.2 教師なし学習 ~~~~~~~~~~~~~~ | # | A | B | C | | - | --- | --- | --- | | ① | ~~~ | ~~~ | ~~~ | | ② | ~~~ | ~~~ | ~~~ | | ③ | ~~~ | ~~~ | ~~~ | Table1 XXXXXX ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ チャンクした 本文を検索対象に チャンクの概要 +付加情報を 検索対象に 通常のパターン。文章の情報がぶつ切りになるため重要なキーワードが 含まれない場合があったり、前後関係やテーマが抜け落ちる場合があ る 検索に必要をLLMによって抜き出すパターン。ドキュメントのある程度 の塊を渡しておき、チャンクの概要やキーワードなどを加え検索用のテ キストを作り直す チャンクから想定される ユーザの質問文を 検索対象に ユーザの入力が質問文であることを想定し、あらかじめ想定質問を チャンクからLLMで生成して、その質問文を検索対象とする。 検索対象とクエリを近づけるという点で考え方は クエリ拡張のHyDEのコンセプトに似ている

Slide 21

Slide 21 text

21 検索クエリと検索対象ドキュメントの両方でキーワードを意識した情報抽出を クエリと検索対象のマッチングが大前提となるため、双方に十分な情報があるか常に意識したインデックスづくりを心がけたい Azure OpenAI クエリ化 Prompt flowで分岐処理を 書く方法 Amazon Bedrock Prompt Flowsのテキスト Prompt flow, 分岐処理 Azure OpenAI ベクトル化 [0.67, 0.11, ………………..] 分岐処理はコンソール画面の〇〇タブから△を選択 し、 ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………… MicrosoftのPrompt flowについて知りたい クエリ化におけるLLMの情報収集が十分でないため キーワードを特定できていない ドキュメント側にもキーワードが無いため検索時には Azureかどうかの区別ができない

Slide 22

Slide 22 text

22 いずれにしろ、どのステップで精度悪化しているか把握することが先決 入力情報の加工 ドキュメント・クエリマッチング 検索実行 コンテキストベース回答 ➢ 一般情報+聞き返し指示 ➢ 検索実行条件プロセス定義 ➢ クエリ拡張 ➢ ドキュメント加工 ➢ 類似度チューニング ➢ ハイブリッド検索 ➢ フィルタリング ➢ リランク ➢ チャンクチューニング ➢ データの構造化 ➢ コンテキストの要約 対 策 AI技術の強みを教えて。 初心者用バットがほしい 初心者用バット、ほしいですよね! 子供が初心者バットを欲しがってる 壊れてしまった初心者用バット 類似度ヒットしたドキュメント 類似はしているが 意図が拾えてない User Questionに回答せよ。 # User Question たまごはコレステロールが多く健康に悪いで すよね? # Context 表1のように卵の摂取は長年健康への悪 影響が懸念されていた。しかし、 プロンプト 途中で文章が切れている。 図表が取り込めていない 精度向上施策を打つ前に、原因を特定することが極めて重要 検索するための情報が 足りない 初心者でも扱いやすいように、特 別に軽量化されています。 かなり振りやすいので初めてでも 扱いやすいバットといえます。 クリケットの初心者は、バットと 同じ要領でスイングしてしまいます。 検索対象ドキュメント 1 2 3 スコア 0.702 0.401 0.780 ユーザ入力に検索のための 情報が足りない、整理されていない 入力された内容と検索対象が 意図した類似になっていない 検索エンジンの精度が悪い。 検索結果を 正しく解釈できていない 原 因

Slide 23

Slide 23 text

23 LLM運用上の最新アップデート

Slide 24

Slide 24 text

24 ログはユーザニーズの宝庫。必ず取得し分析できるまでのパイプラインを整えること Blob Storage Azure Datalake Storage Azure Machine Learning データ取得 ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~ ログ Azure OpenAI Service Embedding + クラスタリングを施し プロンプトの傾向を分析→ FAQデータベース化へ Sentiment分析にかけ 回答の良し悪し分類→テストデータ化やメタプロンプト改善 独自のContent filteringトレーニングに用いて 不正検知やプロンプトインジェクション対策 レコメンドアルゴリズムへのインプットにして より高度なパーソナライズへ

Slide 25

Slide 25 text

25 コンテンツフィルタリング機能を理解し、非同期化も含めた適切な設定を Azure OpenAIにおいては組み込みのコンテンツフィルタが備わっており、プロンプトと生成コンテンツ両方でチェックが入る。 自前での実装は非常に手間が掛かるため積極的に活用したい。 不適切表現検知 テキスト・コード検知 ヘイト、自傷的、性的、暴力的な表現を検知してブロックする。 提供したサービスに対するいたずらや、不適切な出力を防いでトラブルを未然に防止する。 公開されているテキストとの類似を検知する。 コードについては対象のリポジトリやライセンスもチェックする。権利関係に関するトラブルを回避するのに役立つ。 Jailbreak システムプロンプトの乗っ取り・抜き出しなどを誘発する直接的な攻撃を検知、ブロックする。 Azure OpenAI エンドポイント Prompt フィルター Contents フィルター Azure OpenAIで 使えるモデルは? 現在使えるモデルはgpt-4, gpt-35-turbo, …です。 Azure OpenAI Service のコンテンツのフィルター処理 - Azure OpenAI | Microsoft Learn 生成AI処理 Filter結果が返る Filter結果が返る 問題あり 問題なし 問題あり 問題なし Azure AI が脱獄攻撃と間接プロンプト挿入攻撃に対するプロンプト シールドを発表 (microsoft.com) 直接攻撃検知 システムプロンプトの乗っ取り・抜き出しなどを誘発する間接的な攻撃を検知、ブロックする。 実は間接攻撃にはLLMは弱い傾向がある。 間接攻撃検知 New ! 生成AIのハッキング手法と対策(プロンプトベース) | DOORS DX (brainpad.co.jp)

Slide 26

Slide 26 text

26 トークナイザの効率化で実質のコストが変化している トークンカウントについては tiktoken と呼ばれるライブラリで確認が可能。 新しいモデルになるほどトークン効率の良いトークナイザが使われる。 OpenAI 言語モデルで日本語を扱う際のトークン数推定指標 (zenn.dev) こんにちはOpenAI トークン化 モデル エンコーディングツール名 文字あたりのトークン数(参考値) gpt-4o gpt-4o mini など o200k_base 0.8001 gpt-4, gpt-4 turbo gpt-3.5-turbo ほか cl100k_base 1.0905 text-davinci-003 text-davinci-002 ほか p50k_base 1.4013 text-curie-001 text-babbage-001 text-ada-001 ほか r50k_base 1.4015 OpenAI 言語モデルごとのエンコーディング一覧 (zenn.dev) [ “こんにちは”, “Open”, “AI” ] この例では3トークン 最新はo200k_base GUIで実際にトークンカウントを試すにはこちら(OpenAI公式)

Slide 27

Slide 27 text

27 コスト計算方法 改めてコストの影響を確認する。格段にコストパフォーマンスは向上した。 従業員1万人の会社でプレーンなGPTを業務利用するケース Azure OpenAI Service - 価格 | Microsoft Azure ※ 料金は公式ドキュメントから資料作成時点で算出した目安です。為替で価格変動しますので$ベースの正確な価格は下記を参照してください。 ユーザ数 [人] 10000 1 日のチャット回数 [回] 10 1チャットあたりのトータルトークン数 (1000文字処理の想定。日本語 1 文字 0.8 トークンと換算) [トークン] 800 月の稼働日 [日] 21 1M トークンあたりの GPT-4o mini の料金 入力 [$] 0.15 出力 [$] 0.6 1M トークンあたりの GPT-4o の料金 入力 [$] 5 出力 [$] 15 GPT-4o mini GPT-4o 10000×10×800×21×(0.15×0.6+0.6×0.4)÷1000×155 =約85,932円/月 10000×10×800×21×(5×0.6+15×0.4)÷1000×155 =約2,343,600円/月 1 人あたり 0.859 円程度 1 人あたり 234 円程度 (入力:出力=6:4, 1$155円で仮定) (入力:出力=6:4, 1$155円で仮定)

Slide 28

Slide 28 text

28 リージョンを指定しないGlobal Deploymentを上手く活用しよう リージョンを指定しないことで通常よりも多くのTPMを確保したデプロイメントが可能。 リージョン A リージョン B リージョン C リージョン D リージョン E Understanding Azure OpenAI Service deployment types - Azure AI services | Microsoft Learn Global Deployにリクエストを投げると AIによる推論処理が実行されるリージョンが バックエンドで自動選択 エ ン ド ポ イ ン ト Chat Completion API gpt-4 Regional Deployment gpt-4o Regional Deployment … 米国東部 Azure OpenAI リソース gpt-4o Global Deployment

Slide 29

Slide 29 text

29 ◼ 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、提示された情報の信憑性 については保証できません。 ◼ 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 ◼ すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、機械的、複写、レコー ディング、その他)、および目的であっても禁じられています。 これらは著作権保護された権利を制限するものではありません。 ◼ Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれらの特許、商標、著作権、ま たはその他の知的財産へのライセンスを与えるものではありません。 © 2024 Microsoft Corporation. All rights reserved. Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。