Prompt flowは、LLMベースのAIアプリケーションのアイデア出し、プロトタイピング、テスト、評価から本番展開や監視までの一連の開発サイクルを効率化するための開発ツール群です。プロンプトエンジニアリングを格段に簡単にし、実用レベルのLLMアプリを構築できるようにします。
Prompt flowを使うと、以下が可能になります:
-
LLM、プロンプト、Pythonコード、その他のツールを連携させた実行可能なワークフローを作成する。
-
特にLLMとのやり取りを含むフローのデバッグや反復を簡単に行う。
-
大規模データセットを使ってフローの評価や品質・性能指標の計算を行う。
-
テストと評価をCI/CDシステムに統合し、フローの品質を保証する。
-
選択したサービングプラットフォームにフローを展開したり、アプリのコードベースに簡単に組み込む。
-
(任意だが強く推奨)Azure AIのクラウド版Prompt flowを活用してチームでの共同作業を行う。
AI PCはCPU、GPU、NPUを搭載しており、それぞれ特定のAIアクセラレーション機能を持っています。NPU(ニューラルプロセッシングユニット)は、AIや機械学習(ML)タスクをクラウドに送信せずにPC上で直接処理するための専用アクセラレータです。GPUやCPUもこれらの処理を行えますが、NPUは特に低消費電力のAI計算に優れています。AI PCは、コンピュータの使い方における根本的な変化を示しています。これは従来存在しなかった問題の解決策ではなく、日常的なPC利用における大幅な改善を約束するものです。
では、どのように動作するのでしょうか?大量の公開データで訓練された巨大な大規模言語モデル(LLM)や生成AIと比べて、PC上で動作するAIはほぼすべての面でより身近なものになります。コンセプトも理解しやすく、クラウドにアクセスする必要がなく自分のデータで訓練されているため、より幅広いユーザーにとって即効性のあるメリットがあります。
近い将来、AI PCの世界では、個人アシスタントや小規模なAIモデルがPC上で直接動作し、あなたのデータを使って、会議の議事録作成、ファンタジーフットボールリーグの管理、写真や動画編集の自動補正、家族の集まりのための最適な旅程作成など、日常的に行う作業をより個人的でプライベートかつ安全に強化します。
注記 :環境構築がまだの場合は、Lab 0 -Installationsをご覧ください。
- Visual Studio CodeでPrompt flow拡張機能を開き、空のフロープロジェクトを作成します。
- 入力と出力のパラメータを追加し、新しいフローとしてPythonコードを追加します。
この構造(flow.dag.yaml)を参考にフローを構築できます。
inputs:
question:
type: string
default: how to write Bubble Algorithm
outputs:
answer:
type: string
reference: ${Chat_With_Phi3.output}
nodes:
- name: Chat_With_Phi3
type: python
source:
type: code
path: Chat_With_Phi3.py
inputs:
question: ${inputs.question}
- Chat_With_Phi3.pyにコードを追加します。
from promptflow.core import tool
# import torch
from transformers import AutoTokenizer, pipeline,TextStreamer
import intel_npu_acceleration_library as npu_lib
import warnings
import asyncio
import platform
class Phi3CodeAgent:
model = None
tokenizer = None
text_streamer = None
model_id = "microsoft/Phi-3-mini-4k-instruct"
@staticmethod
def init_phi3():
if Phi3CodeAgent.model is None or Phi3CodeAgent.tokenizer is None or Phi3CodeAgent.text_streamer is None:
Phi3CodeAgent.model = npu_lib.NPUModelForCausalLM.from_pretrained(
Phi3CodeAgent.model_id,
torch_dtype="auto",
dtype=npu_lib.int4,
trust_remote_code=True
)
Phi3CodeAgent.tokenizer = AutoTokenizer.from_pretrained(Phi3CodeAgent.model_id)
Phi3CodeAgent.text_streamer = TextStreamer(Phi3CodeAgent.tokenizer, skip_prompt=True)
@staticmethod
def chat_with_phi3(prompt):
Phi3CodeAgent.init_phi3()
messages = "<|system|>You are a AI Python coding assistant. Please help me to generate code in Python.The answer only genertated Python code, but any comments and instructions do not need to be generated<|end|><|user|>" + prompt +"<|end|><|assistant|>"
generation_args = {
"max_new_tokens": 1024,
"return_full_text": False,
"temperature": 0.3,
"do_sample": False,
"streamer": Phi3CodeAgent.text_streamer,
}
pipe = pipeline(
"text-generation",
model=Phi3CodeAgent.model,
tokenizer=Phi3CodeAgent.tokenizer,
# **generation_args
)
result = ''
with warnings.catch_warnings():
warnings.simplefilter("ignore")
response = pipe(messages, **generation_args)
result =response[0]['generated_text']
return result
@tool
def my_python_tool(question: str) -> str:
if platform.system() == 'Windows':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
return Phi3CodeAgent.chat_with_phi3(question)
- デバッグまたは実行からフローをテストし、生成コードが正しく動作するか確認します。
- ターミナルで開発用APIとしてフローを実行します。
pf flow serve --source ./ --port 8080 --host localhost
PostmanやThunder Clientでテスト可能です。
-
初回実行は時間がかかります。Hugging face CLIからphi-3モデルをダウンロードすることを推奨します。
-
Intel NPUの計算能力が限られているため、Phi-3-mini-4k-instructの使用を推奨します。
-
Intel NPUアクセラレーションでINT4量子化変換を行っていますが、サービスを再実行する場合はキャッシュとnc_workshopフォルダを削除する必要があります。
-
Promptflowの学習 https://microsoft.github.io/promptflow/
-
Intel NPU Accelerationの学習 https://github.com/intel/intel-npu-acceleration-library
-
サンプルコードのダウンロード Local NPU Agent Sample Code
免責事項:
本書類はAI翻訳サービス「Co-op Translator」を使用して翻訳されました。正確性の向上に努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語によるオリジナル文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や誤訳についても、当方は責任を負いかねます。


