Bu makalede, önceki hızlı başlangıç makalesinde oluşturduğunuz işlev uygulamasına HTTP uç noktası eklemek için Visual Studio Code'un nasıl kullanılacağı gösterilmektedir. Bu yeni HTTP uç noktası tetiklendiğinde, veri modelinizden metin tamamlama ipuçlarını almak için bir Azure OpenAI metin tamamlama giriş bağlaması kullanır.
Bu öğretici sırasında şu görevleri gerçekleştirmeyi öğreneceksiniz:
Azure OpenAI'de kaynak oluşturma.
OpenAI kaynağında bir model dağıtın.
Model kaynağına erişim izinlerini ayarlayın.
İşlev uygulamanızın OpenAI'ye bağlanması için etkinleştirin.
HTTP ile tetiklenen işlevinize OpenAI bağlamaları ekleyin.
Kaynak oluştur'u seçin ve Azure OpenAI'yi arayın. Hizmeti bulurken Oluştur'u seçin.
Azure OpenAI Oluştur sayfasında, Temel Bilgiler sekmesindeki alanlar için aşağıdaki bilgileri sağlayın:
Alan
Açıklama
Abonelik
Azure OpenAI kullanmak üzere eklenen aboneliğiniz.
Kaynak grubu
Önceki makalede işlev uygulaması için oluşturduğunuz kaynak grubu. Azure Kaynakları tarayıcısında işlev uygulamasına sağ tıklayıp özellikleri seçip döndürülen JSON kaynak dosyasında ayarı arayarak resourceGroup bu kaynak grubu adını bulabilirsiniz.
Bölge
İdeal olan işlev uygulamasıyla aynı konumdur.
Ad
Azure OpenAI Hizmeti kaynağınız için mySampleOpenAI gibi açıklayıcı bir ad.
Fiyatlandırma Katmanı
Kaynağın fiyatlandırma katmanı. Şu anda Azure OpenAI Hizmeti için yalnızca Standart katman kullanılabilir. Fiyatlandırma hakkında daha fazla bilgi için Azure OpenAI fiyatlandırma sayfasını ziyaret edin
Hem Ağ hem de Etiketler sekmelerinin varsayılan değerlerini kabul etmek için İleri'yiiki kez seçin. Oluşturduğunuz hizmetin İnternet dahil olmak üzere herhangi bir ağ kısıtlaması yoktur.
İşlemin son aşamasına geçmek için Son bir kez İleri'yi seçin: Gözden geçir + gönder.
Yapılandırma ayarlarınızı onaylayın ve Oluştur'u seçin.
Azure portalı, yeni kaynak kullanılabilir olduğunda bir bildirim görüntüler. Bildirimde Kaynağa git'i seçin veya yeni Azure OpenAI kaynağınızı ada göre arayın.
Yeni kaynağınızın Azure OpenAI kaynağı sayfasında Temel Uç>Noktalar'ın altındaki uç noktaları görüntülemek için buraya tıklayın'ı seçin. Uç nokta URL'sini ve anahtarları kopyalayın. Bu değerleri kaydedin, daha sonra ihtiyacınız olacak.
Artık Azure OpenAI'de modelinize bağlanmak için kimlik bilgileriniz olduğuna göre, bu erişim kimlik bilgilerini uygulama ayarlarında ayarlamanız gerekir.
3. Model dağıtma
Artık bir model dağıtabilirsiniz. Azure OpenAI Studio'daki çeşitli kullanılabilir modellerden birini seçebilirsiniz.
Modeli dağıtmak için şu adımları izleyin:
Azure OpenAI Studio'da oturum açın.
Oluşturduğunuz aboneliği ve Azure OpenAI kaynağını seçin ve kaynağı kullan'ı seçin.
Yönetim'in altında Dağıtımlar'ı seçin.
Yeni dağıtım oluştur'u seçin ve aşağıdaki alanları yapılandırın:
Alan
Açıklama
Dağıtım adı
Bir adı dikkatle seçin. Dağıtım adı, kodunuzda istemci kitaplıklarını ve REST API'lerini kullanarak modeli çağırmak için kullanılır, bu nedenle daha sonra kullanmak üzere kaydetmeniz gerekir.
Modele API aracılığıyla eriştiğinizde, OpenAI ile Azure OpenAI arasındaki temel farklardan biri olan API çağrılarında temel model adı yerine dağıtım adına başvurmanız gerekir. OpenAI yalnızca model adını gerektirir. Azure OpenAI, model parametresini kullanırken bile her zaman dağıtım adı gerektirir. Belgelerimizde, hangi modelin belirli bir API uç noktasıyla çalıştığını belirtmeye yardımcı olmak için genellikle dağıtım adlarının model adlarıyla aynı olarak gösterildiği örnekler bulunur. Sonuç olarak dağıtım adlarınız, kullanım örneğiniz için en uygun adlandırma kuralını izleyebilir.
Ayarın geri kalanı için varsayılan değerleri kabul edin ve Oluştur'u seçin.
Dağıtımlar tablosu, yeni oluşturduğunuz modele karşılık gelen yeni bir girdi gösterir.
Artık işlev uygulamanıza Azure OpenAI tabanlı metin tamamlama eklemek için ihtiyacınız olan her şeye sahipsiniz.
Proje kök klasöründeki local.settings.json dosyasında, ayarını olarak UseDevelopmentStorage=truegüncelleştirinAzureWebJobsStorage. local.settings.json ayarı yerine UseDevelopmentStorage=truemevcut bir Azure Depolama hesabının bağlantı dizesi olarak ayarlandıysa AzureWebJobsStorage bu adımı atlayabilirsiniz.
local.settings.json dosyasına şu ayar değerlerini ekleyin:
AZURE_OPENAI_ENDPOINT: bağlama uzantısı tarafından gereklidir. Bu değeri daha önce oluşturduğunuz Azure OpenAI kaynağının uç noktası olarak ayarlayın.
AZURE_OPENAI_KEY: bağlama uzantısı tarafından gereklidir. Bu değeri Azure OpenAI kaynağının anahtarı olarak ayarlayın.
CHAT_MODEL_DEPLOYMENT_NAME: giriş bağlamasını tanımlamak için kullanılır. Bu değeri model dağıtımınız için seçtiğiniz ada ayarlayın.
Dosyayı kaydedin. Azure'a dağıttığınızda, bu ayarları işlev uygulamanıza da eklemeniz gerekir.
5. Bağlama uzantılarını kaydetme
Azure OpenAI çıkış bağlaması kullandığınızdan, projeyi çalıştırmadan önce ilgili bağlama uzantısını yüklemiş olmanız gerekir.
HTTP ve zamanlayıcı tetikleyicileri dışında bağlamalar uzantı paketleri olarak uygulanır. Azure OpenAI uzantı paketini projenize eklemek için Terminal penceresinde şu dotnet add package komutunu çalıştırın:
Artık projenizde Azure OpenAI çıkış bağlamasını kullanabilirsiniz.
6. Modelden metin tamamlama döndürme
Eklediğiniz kod, mevcut projenizde bir whois HTTP işlev uç noktası oluşturur. Bu işlevde, bir GET isteğinin URL name parametresinde geçirilen veriler dinamik olarak tamamlama istemi oluşturmak için kullanılır. Bu dinamik istem, modelden istem temelinde bir yanıt döndüren bir metin tamamlama giriş bağlamasına bağlıdır. Modelin tamamlanması HTTP yanıtında döndürülür.
Mevcut HttpExample sınıf dosyanıza şu using deyimi ekleyin:
using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
Aynı dosyaya adlı whoisyeni bir HTTP tetikleyici uç noktasını tanımlayan bu kodu ekleyin:
[Function(nameof(WhoIs))]
public IActionResult WhoIs([HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequest req,
[TextCompletionInput("Who is {name}?", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
if(!String.IsNullOrEmpty(response.Content))
{
return new OkObjectResult(response.Content);
}
else
{
return new NotFoundObjectResult("Something went wrong.");
}
}
Koleksiyona pom.xml bu başvuruyu eklemek için proje dosyasını güncelleştirin properties :
Aynı dosyaya adlı whoisyeni bir HTTP tetikleyici uç noktasını tanımlayan bu kodu ekleyin:
@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "whois/{name}")
HttpRequestMessage<Optional<String>> request,
@BindingName("name") String name,
@TextCompletion(prompt = "Who is {name}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response.getContent())
.build();
}
Visual Studio Code'da F1 tuşuna basın ve komut paleti türünde Azure Functions: Create Function...HTTP tetikleyicisi'ni seçin, işlev adını whoisyazın ve Enter tuşuna basın.
Yeni whois.js kod dosyasında dosyanın içeriğini şu kodla değiştirin:
Visual Studio Code'da F1 tuşuna basın ve komut paleti türünde Azure Functions: Create Function...HTTP tetikleyicisi'ni seçin, işlev adını whoisyazın ve Enter tuşuna basın.
Yeni whois.ts kod dosyasında dosyanın içeriğini şu kodla değiştirin:
import { app, input } from "@azure/functions";
// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
prompt: 'Who is {name}?',
maxTokens: '100',
type: 'textCompletion',
model: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})
app.http('whois', {
methods: ['GET'],
route: 'whois/{name}',
authLevel: 'function',
extraInputs: [openAICompletionInput],
handler: async (_request, context) => {
var response: any = context.extraInputs.get(openAICompletionInput)
return { body: response.content.trim() }
}
});
Mevcut function_app.py proje dosyasına şu import deyimi ekleyin:
import json
Aynı dosyaya adlı whoisyeni bir HTTP tetikleyici uç noktasını tanımlayan bu kodu ekleyin:
Visual Studio Code'da F1 tuşuna basın ve komut paleti türünde Azure Functions: Create Function...HTTP tetikleyicisi'ni seçin, işlev adını whoisyazın, Anonim'i seçin ve Enter tuşuna basın.
Yeni whois/function.json kod dosyasını açın ve içeriğini giriş bağlaması için TextCompletionResponse bir tanım ekleyen şu kodla değiştirin:
Kod dosyasının whois/run.ps1 içeriğini, giriş bağlama yanıtını döndüren şu kodla değiştirin:
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
7. İşlevi çalıştırma
Visual Studio Code'da F1 tuşuna basın ve komut paleti türünde Azurite: Start Enter tuşuna basarak Azurite depolama öykünücüsü başlatın.
İşlev uygulaması projesini ve Çekirdek Araçları'nı hata ayıklama modunda başlatmak için F5 tuşuna basın.
Core Tools çalışırken, uç nokta işlevine whois , yolda şu URL gibi bir adla bir GET isteği gönderin:
http://localhost:7071/api/whois/<NAME>
Dizeyi <NAME> , istemine geçirilmesini "Who is {name}?" istediğiniz değerle değiştirin. <NAME>, gibi Abraham%20Lincolnbir genel şeklin URL ile kodlanmış adı olmalıdır.
Gördüğünüz yanıt, Azure OpenAI modelinizden gelen metin tamamlama yanıtıdır.
Yanıt döndürüldükten sonra Çekirdek Araçları'nı durdurmak için Ctrl + C tuşlarına basın.
8. Kaynakları temizleme
Azure'da kaynaklar işlev uygulamaları, işlevler, depolama hesapları vb. ifade eder. Bunlar kaynak grupları halinde gruplandırılır ve grubu silerek gruptaki her şeyi silebilirsiniz.
Bu hızlı başlangıçları tamamlamak için kaynaklar oluşturdunuz. Hesap durumunuz ve hizmet fiyatlandırmanıza bağlı olarak bu kaynaklar için faturalandırılabilirsiniz. Kaynaklara artık ihtiyacınız yoksa, şunları yaparak silebilirsiniz:
Visual Studio Code'da F1 tuşuna basarak komut paletini açın. Komut paletinde araması yapın ve öğesini seçin Azure: Open in portal.
İşlev uygulamanızı seçin ve Enter tuşuna basın. İşlev uygulaması sayfası Azure portalında açılır.
Genel Bakış sekmesinde Kaynak grubunun yanındaki adlandırılmış bağlantıyı seçin.
Kaynak grubu sayfasında, dahil edilen kaynakların listesini gözden geçirin ve bunların silmek istediğiniz kaynaklar olduğunu doğrulayın.
Kaynak grubunu sil’i seçin ve yönergeleri izleyin.
Silme işlemi birkaç dakika sürebilir. İşlem tamamlandığında, birkaç saniye boyunca bir bildirim görüntülenir. Bildirimi görüntülemek için sayfanın üst kısmındaki zil simgesini de seçebilirsiniz.