Prompt flow is een verzameling ontwikkeltools die de volledige ontwikkelingscyclus van op LLM gebaseerde AI-toepassingen stroomlijnen, van ideeëngeneratie, prototyping, testen, evaluatie tot productie-implementatie en monitoring. Het maakt prompt engineering veel eenvoudiger en stelt je in staat om LLM-apps van productiekwaliteit te bouwen.
Met prompt flow kun je:
-
Flows maken die LLM’s, prompts, Python-code en andere tools samenbrengen in een uitvoerbare workflow.
-
Je flows debuggen en itereren, vooral de interactie met LLM’s, op een gemakkelijke manier.
-
Je flows evalueren en kwaliteits- en prestatie-indicatoren berekenen met grotere datasets.
-
Testen en evaluatie integreren in je CI/CD-systeem om de kwaliteit van je flow te waarborgen.
-
Je flows eenvoudig implementeren op het door jou gekozen serveerplatform of integreren in de codebasis van je app.
-
(Optioneel maar sterk aanbevolen) Samenwerken met je team door gebruik te maken van de cloudversie van Prompt flow in Azure AI.
Een AI PC heeft een CPU, een GPU en een NPU, elk met specifieke AI-versnellingsmogelijkheden. Een NPU, of neural processing unit, is een gespecialiseerde accelerator die AI- en machine learning (ML)-taken direct op je PC uitvoert in plaats van data naar de cloud te sturen voor verwerking. De GPU en CPU kunnen deze taken ook uitvoeren, maar de NPU is vooral geschikt voor energiezuinige AI-berekeningen. De AI PC vertegenwoordigt een fundamentele verschuiving in hoe onze computers werken. Het is geen oplossing voor een probleem dat eerder niet bestond, maar belooft een enorme verbetering voor dagelijks PC-gebruik.
Hoe werkt het? In vergelijking met generatieve AI en de enorme grote taalmodellen (LLM’s) die getraind zijn op enorme hoeveelheden publieke data, is de AI die op je PC draait toegankelijker op vrijwel elk niveau. Het concept is makkelijker te begrijpen en omdat het getraind is op jouw data, zonder dat er toegang tot de cloud nodig is, zijn de voordelen direct aantrekkelijker voor een breder publiek.
Op korte termijn draait het AI PC-wereldje om persoonlijke assistenten en kleinere AI-modellen die direct op je PC draaien, gebruikmakend van jouw data om persoonlijke, privé en veiligere AI-verbeteringen te bieden voor dingen die je al dagelijks doet – notuleren tijdens vergaderingen, een fantasy football league organiseren, automatische verbeteringen voor foto- en videobewerking, of het samenstellen van de perfecte reisroute voor een familiebijeenkomst op basis van ieders aankomst- en vertrektijden.
Note :Als je de omgeving nog niet hebt geïnstalleerd, bezoek dan Lab 0 - Installaties
- Open de Prompt flow-extensie in Visual Studio Code en maak een leeg flow-project aan
- Voeg Inputs en Outputs parameters toe en voeg Python-code toe als nieuwe flow
Je kunt deze structuur (flow.dag.yaml) gebruiken om je flow op te bouwen
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}
- Voeg code toe in 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)
- Je kunt de flow testen via Debug of Run om te controleren of de generatiecode werkt
- Run de flow als ontwikkel-API in de terminal
pf flow serve --source ./ --port 8080 --host localhost
Je kunt het testen in Postman / Thunder Client
-
De eerste keer uitvoeren duurt lang. Het wordt aanbevolen om het phi-3 model te downloaden via de Hugging face CLI.
-
Gezien de beperkte rekenkracht van de Intel NPU, wordt aanbevolen Phi-3-mini-4k-instruct te gebruiken.
-
We gebruiken Intel NPU-versnelling om INT4-quantisatie uit te voeren, maar als je de service opnieuw start, moet je de cache- en nc_workshop-mappen verwijderen.
-
Leer Promptflow https://microsoft.github.io/promptflow/
-
Leer Intel NPU Acceleration https://github.com/intel/intel-npu-acceleration-library
-
Voorbeeldcode, download Local NPU Agent Sample Code
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsdienst Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet als de gezaghebbende bron worden beschouwd. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.


