Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento kurz vás provede nasazením chatovací aplikace založené na Spring Boot integrované s rozšířením Phi-4 sidecar ve službě Azure App Service. Podle kroků se dozvíte, jak nastavit škálovatelnou webovou aplikaci, přidat sajdkáru využívající AI pro vylepšené konverzační funkce a otestovat funkčnost chatovacího robota.
Hostování vlastního malého jazykového modelu (SLM) nabízí několik výhod:
- Plnou kontrolu nad daty. Citlivé informace nejsou vystaveny externím službám, což je důležité pro odvětví s přísnými požadavky na dodržování předpisů.
- Modely v místním prostředí je možné doladit tak, aby splňovaly konkrétní případy použití nebo požadavky specifické pro doménu.
- Minimalizovaná latence sítě a rychlejší doba odezvy pro lepší uživatelské prostředí
- Úplná kontrola nad přidělováním prostředků a zajištění optimálního výkonu pro vaši aplikaci
Požadavky
- Účet Azure s aktivním předplatným.
- Účet GitHub.
Nasazení ukázkové aplikace
V prohlížeči přejděte do úložiště ukázkové aplikace.
Spusťte nový Codespace z úložiště.
Přihlaste se pomocí svého účtu Azure:
az loginOtevřete terminál v Codespace a spusťte následující příkazy:
cd use_sidecar_extension/springapp ./mvnw clean package az webapp up --sku P3MV3 --runtime "JAVA:21-java21" --os-type linux
Přidejte rozšíření Phi-4 sidecar
V této části přidáte rozšíření Phi-4 sidecar do aplikace ASP.NET Core hostované ve službě Azure App Service.
- Přejděte na web Azure Portal a přejděte na stránku pro správu vaší aplikace.
- V nabídce vlevo vyberte Deployment>Deployment Center.
- Na kartě Kontejnery vyberte Přidat>Sidecar rozšíření.
- V možnostech rozšíření postranního panelu vyberte AI: phi-4-q4-gguf (Experimentální).
- Zadejte název rozšíření Sidecar.
- Výběrem možnosti Uložit se změny uplatní.
- Počkejte několik minut, než se rozšíření sidecar nasadí. Pokračujte ve výběru Aktualizovat, dokud se ve sloupci Stav nezobrazí Spuštěno.
Toto rozšíření Phi-4 sidecar používá rozhraní API pro dokončování chatu, jako je OpenAI, které může reagovat na odpověď při dokončení chatu na adrese http://localhost:11434/v1/chat/completions. Další informace o interakci s rozhraním API najdete v tématech:
Otestování chatovacího robota
Na stránce správy vaší aplikace v nabídce vlevo vyberte Přehled.
V části Výchozí doména vyberte adresu URL a otevřete webovou aplikaci v prohlížeči.
Ověřte, že chatovací aplikace běží a reaguje na vstupy uživatelů.
Jak funguje ukázková aplikace
Ukázková aplikace ukazuje, jak integrovat službu Java s rozšířením SLM sidecar. Třída ReactiveSLMService zapouzdřuje logiku pro odesílání požadavků do rozhraní SLM API a zpracování streamovaných odpovědí. Tato integrace umožňuje aplikaci dynamicky generovat konverzační odpovědi.
Když se podíváte na use_sidecar_extension/springapp/src/main/java/com/example/springapp/service/ReactiveSLMService.java, uvidíte, že:
Služba načte adresu URL z
fashion.assistant.api.url, která je nastavena v souboru application.properties a má hodnotuhttp://localhost:11434/v1/chat/completions.public ReactiveSLMService(@Value("${fashion.assistant.api.url}") String apiUrl) { this.webClient = WebClient.builder() .baseUrl(apiUrl) .build(); }Datová část POST obsahuje systémovou zprávu a výzvu vytvořenou z vybraného produktu a dotazu uživatele.
JSONObject requestJson = new JSONObject(); JSONArray messages = new JSONArray(); JSONObject systemMessage = new JSONObject(); systemMessage.put("role", "system"); systemMessage.put("content", "You are a helpful assistant."); messages.put(systemMessage); JSONObject userMessage = new JSONObject(); userMessage.put("role", "user"); userMessage.put("content", prompt); messages.put(userMessage); requestJson.put("messages", messages); requestJson.put("stream", true); requestJson.put("cache_prompt", false); requestJson.put("n_predict", 2048); String requestBody = requestJson.toString();Reaktivní požadavek POST streamuje řádek odpovědi po řádku. Každý řádek se analyzuje a extrahuje vygenerovaný obsah (nebo token).
return webClient.post() .contentType(MediaType.APPLICATION_JSON) .body(BodyInserters.fromValue(requestBody)) .accept(MediaType.TEXT_EVENT_STREAM) .retrieve() .bodyToFlux(String.class) .filter(line -> !line.equals("[DONE]")) .map(this::extractContentFromResponse) .filter(content -> content != null && !content.isEmpty()) .map(content -> content.replace(" ", "\u00A0"));
Nejčastější dotazy
Jaký vliv má cenová úroveň na výkon sajdkáře SLM?
Vzhledem k tomu, že modely AI spotřebovávají značné prostředky, zvolte cenovou úroveň, která poskytuje dostatek virtuálních procesorů a paměti ke spuštění konkrétního modelu. Z tohoto důvodu se předdefinovaná rozšíření AI sidecar zobrazí jenom v případě, že je aplikace ve vhodné cenové hladině. Pokud vytváříte vlastní kontejner sajdkáře SLM, měli byste také použít model optimalizovaný pro procesor, protože cenové úrovně služby App Service jsou úrovně jen pro procesor.
Například minimodel Phi-3 s délkou kontextu 4K od Hugging Face je navržený tak, aby běžel s omezenými prostředky a poskytuje silné matematické a logické důvody pro mnoho běžných scénářů. Dodává se také s verzí optimalizovanou pro procesor. Ve službě App Service jsme model otestovali na všech úrovních Premium a zjistili jsme, že funguje dobře ve vrstvě P2mv3 nebo vyšší. Pokud to vaše požadavky umožňují, můžete ho spustit na nižší úrovni.
Jak používat vlastní sajdkáře SLM?
Ukázkové úložiště obsahuje ukázkový kontejner SLM, který můžete použít jako sajdkár. Spustí aplikaci FastAPI, která naslouchá na portu 8000, jak je uvedeno v souboru Dockerfile. Aplikace používá modul RUNTIME ONNX k načtení modelu Phi-3 a pak předá data HTTP POST do modelu a streamuje odpověď z modelu zpět do klienta. Další informace najdete v tématu model_api.py.
Pokud chcete sami vytvořit nebo sestavit image sidecar, musíte si na počítači nainstalovat Docker Desktop lokálně.
Naklonujte úložiště místně.
git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar cd ai-slm-in-app-service-sidecarPřejděte do zdrojového adresáře image Phi-3 a stáhněte model místně pomocí rozhraní příkazového řádku Huggingface.
cd bring_your_own_slm/src/phi-3-sidecar huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnxSoubor Dockerfile je nakonfigurovaný tak, aby model zkopíroval z souboru ./Phi-3-mini-4k-instruct-onnx.
Sestavte dockerový obraz. Například:
docker build --tag phi-3 .Nahrajte vytvořenou image do služby Azure Container Registry a nahrajte svou první image do registru kontejneru Azure pomocí rozhraní příkazového řádku Dockeru.
Na kartě Deployment Center>Kontejnery (nové) vyberte Přidat>vlastní kontejner a nakonfigurujte nový kontejner následujícím způsobem:
- Název: phi-3
- Zdroj image: Azure Container Registry
- Registr: váš registr
- Obrázek: nahraný obrázek
- Značka: požadovaná značka obrázku
- Port: 8000
Vyberte a použijte.
Viz bring_your_own_slm/src/webapp pro ukázkovou aplikaci, která komunikuje s tímto kontejnerem sidecar.
Další kroky
Výukový program: Konfigurace sidecar kontejneru pro aplikaci pro Linux ve službě Azure App Service