Aracılığıyla paylaş


Öğretici: Visual Studio Code'da işlevlerinize Azure OpenAI metin tamamlama ipuçları ekleme

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.

1. Önkoşulları denetleyin

  • Azure aboneliğinizde Azure OpenAI'ye erişim elde edin. Henüz erişim izni verilmediyse, erişim istemek için bu formu doldurun.

2. Azure OpenAI kaynaklarınızı oluşturma

Aşağıdaki adımlarda, Azure portalında Azure OpenAI veri modelinin nasıl oluşturulacağı gösterilmektedir.

  1. Azure portalında Azure aboneliğinizle oturum açın.

  2. Kaynak oluştur'u seçin ve Azure OpenAI'yi arayın. Hizmeti bulurken Oluştur'u seçin.

  3. 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

    Azure portalında Bir Azure OpenAI kaynağının nasıl yapılandırıldığını gösteren ekran görüntüsü.

  4. Hem Ağ hem de Etiketler sekmelerinin varsayılan değerlerini kabul etmek için İleri'yi iki kez seçin. Oluşturduğunuz hizmetin İnternet dahil olmak üzere herhangi bir ağ kısıtlaması yoktur.

  5. İşlemin son aşamasına geçmek için Son bir kez İleri'yi seçin: Gözden geçir + gönder.

  6. 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.

  7. 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:

  1. Azure OpenAI Studio'da oturum açın.

  2. Oluşturduğunuz aboneliği ve Azure OpenAI kaynağını seçin ve kaynağı kullan'ı seçin.

  3. Yönetim'in altında Dağıtımlar'ı seçin.

  4. 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.
    Bir model seçin Modelin kullanılabilirlik durumu bölgeye göre değişir. Bölge başına kullanılabilir modellerin listesi için bkz . Model özet tablosu ve bölge kullanılabilirliği.

    Önemli

    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.

  5. 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.

4. Uygulama ayarlarını güncelleştirme

  1. Visual Studio Code'da, önceki makaleyi tamamladığınızda oluşturduğunuz yerel kod projesini açın.

  2. 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.

  3. 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.
  4. 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:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI --prerelease

5. Uzantı paketini güncelleştirme

Azure OpenAI bağlamalarının önizlemesine erişmek için bu uzantıyı içeren uzantı paketinin önizleme sürümünü kullanmanız gerekir.

extensionBundle Geçerli host.json dosyanızdaki ayarı şu JSON ile değiştirin:

 "extensionBundle": {
   "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
   "version": "[4.*, 5.0.0)"
 }

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.

  1. Mevcut HttpExample sınıf dosyanıza şu using deyimi ekleyin:

    using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion;
    
  2. 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.");
        }
    }
    
  1. Koleksiyona pom.xml bu başvuruyu eklemek için proje dosyasını güncelleştirin properties :

    <azure-functions-java-library-openai>0.4.0-preview</azure-functions-java-library-openai>
    
  2. Aynı dosyada bu bağımlılığı koleksiyona dependencies ekleyin:

    <dependency>
        <groupId>com.microsoft.azure.functions</groupId>
        <artifactId>azure-functions-java-library-openai</artifactId>
        <version>${azure-functions-java-library-openai}</version>
    </dependency>
    
  3. Mevcut Function.java proje dosyasına şu import deyimleri ekleyin:

    import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletion;
    import com.microsoft.azure.functions.openai.annotation.textcompletion.TextCompletionResponse;
    
  4. 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();
    }
    
  1. 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.

  2. Yeni whois.js kod dosyasında dosyanın içeriğini şu kodla değiştirin:

    const { app, input } = require("@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 = context.extraInputs.get(openAICompletionInput)
            return { body: response.content.trim() }
        }
    });
    
  1. 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.

  2. 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() }
        }
    });
    
  1. Mevcut function_app.py proje dosyasına şu import deyimi ekleyin:

    import json
    
  2. Aynı dosyaya adlı whoisyeni bir HTTP tetikleyici uç noktasını tanımlayan bu kodu ekleyin:

    @app.route(route="whois/{name}", methods=["GET"])
    @app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
    def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
        response_json = json.loads(response)
        return func.HttpResponse(response_json["content"], status_code=200)
    
    
    @app.route(route="genericcompletion", methods=["POST"])
    @app.text_completion_input(arg_name="response", prompt="{Prompt}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%")
    def genericcompletion(req: func.HttpRequest, response: str) -> func.HttpResponse:
        response_json = json.loads(response)
        return func.HttpResponse(response_json["content"], status_code=200)
    
  1. 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.

  2. 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:

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "route": "whois/{name}",
          "methods": [
            "get"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        },
        {
          "type": "textCompletion",
          "direction": "in",
          "name": "TextCompletionResponse",
          "prompt": "Who is {name}?",
          "maxTokens": "100",
          "model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
        }
      ]
    }
    
  3. 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

  1. 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.

  2. İşlev uygulaması projesini ve Çekirdek Araçları'nı hata ayıklama modunda başlatmak için F5 tuşuna basın.

  3. 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.

  4. 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:

  1. 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.

  2. İşlev uygulamanızı seçin ve Enter tuşuna basın. İşlev uygulaması sayfası Azure portalında açılır.

  3. Genel Bakış sekmesinde Kaynak grubunun yanındaki adlandırılmış bağlantıyı seçin.

    İşlev uygulaması sayfasından silinecek kaynak grubunu seçme işleminin ekran görüntüsü.

  4. 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.

  5. 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.