Microsoft Foundry'de (klasik) modeller ve LangChain ile uygulama geliştirme

Not

Bu makale, Microsoft Foundry (klasik) portalına başvurur. Yeni portalı kullanıyorsanız, bunun yerine bu makalenin yeni sürümünü kullanın.

LangChain, akıl yürütme uygulamaları oluşturmayı kolaylaştıran bir geliştirici ekosistemidir. Birden çok bileşen içerir ve bunların çoğu bağımsız olarak kullanılabilir, böylece ihtiyacınız olan parçaları seçip seçebilirsiniz.

LangChain ile Microsoft Foundry için dağıtılan modelleri iki şekilde kullanabilirsiniz:

Bu öğreticide, Azure Yapay Zeka Modeli Çıkarım API'sini kullanarak LangChain ile langchain-azure-ai[v1] paketinin nasıl kullanılacağı gösterilmektedir. OpenAI, Cohere veya Mistral gibi bazı modeller kendi API'lerini ve LangChain uzantılarını sunar. Bu uzantılar modele özgü özellikler içerebilir ve bunları kullanmanız gerekiyorsa uygundur. Seçtiğiniz model için langchain-openai veya langchain-cohere gibi uzantıyı yükleyin.

Dikkat

ile langchain-azure-ai[v1] model çıkarımı kullanım dışıdır ve 30 Mayıs 2026'da kullanımdan kaldırılacaktır. Genel kullanıma sunulan OpenAI/v1 API'ye, langchain-azure-ai veya langchain-openai ile kullanıma sunulan kararlı bir OpenAI SDK'sı kullanarak geçin. Daha fazla bilgi edinin.

Önkoşullar

Bu öğreticiyi çalıştırmak için şunları yapmanız gerekir:

  • Etkin aboneliği olan bir Azure hesabı. Hesabınız yoksa ücretsiz deneme aboneliği içeren bir free Azure hesabı oluşturun.
  • Gerekli rol:
    • Foundry kaynağında veya AI Hub'da modelleri dağıtmak için Sahip veya Katkıda Bulunan

    • Foundry Kullanıcısı olarak modeli bir Foundry projesinde kullanmak

      Important

      Foundry RBAC rolleri yakın zamanda yeniden adlandırıldı. Foundry User, Foundry Owner, Foundry Hesabı Sahibi ve Foundry Project Manager daha önce Azure Yapay Zeka Kullanıcısı, Azure Yapay Zeka Sahibi, Azure Yapay Zeka Hesabı Sahibi ve Azure Yapay Zeka Project Yöneticisi olarak adlandırıldı. Yeniden adlandırma kullanıma sunulmaya devam ederken bazı yerlerde önceki adları görmeye devam edebilirsiniz. Rol kimlikleri ve temel izinler yeniden adlandırma ile değiştirilmez.

    • Modeli merkez tabanlı bir projede kullanmak için Azure AI Developer

  • Model Çıkarımı API'sini destekleyen bir model dağıtımı. Bu makalede Mistral-Large-3 kullanılır.

  • pip dahil olmak üzere Python 3.9 veya üzeri yüklü.

  • LangChain yüklendi. Aşağıdaki komutu kullanarak yükleyebilirsiniz:

    pip install langchain
    
  • Foundry tümleştirmesini yükleyin:

    pip install -U langchain-azure-ai[v1]
    

Ortamı yapılandırma

Microsoft Foundry portalında dağıtılan LLM'leri kullanmak için, buna bağlanmak için uç nokta ve kimlik bilgileri gerekir. Kullanmak istediğiniz modelden ihtiyacınız olan bilgileri almak için şu adımları izleyin:

  1. Microsoft Foundry oturum açın. Yeni Dökümhane anahtarının açık olduğundan emin olun. Bu adımlar Foundry (yeni)'ye atıfta bulunur.

  2. Henüz açık değilse modelin dağıtıldığı projeyi açın.

  3. Uç nokta URL'sini ve anahtarı kopyalayın.

Bu senaryoda, uç nokta URL'sini ve anahtarını ortam değişkenleri olarak ayarlayın. (Kopyaladığınız uç nokta sonrasında /modelsek metin içeriyorsa, URL'nin /models aşağıda gösterildiği gibi bitmesi için bunu kaldırın.)

export AZURE_INFERENCE_ENDPOINT="https://<resource>.services.ai.azure.com/models"
export AZURE_INFERENCE_CREDENTIAL="<your-key-goes-here>"

sınıfını kullanarak AzureAIChatCompletionsModel sohbet modeline bağlanmak için bir istemci oluşturun.

import os
from langchain_azure_ai.chat_models import AzureAIChatCompletionsModel

model = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model="Mistral-Large-3",
)

Bu kod parçacığının yaptığı iş: Kimlik doğrulaması için bir AzureAIChatCompletionsModel API anahtarı kullanarak dağıtılan modelinize bağlanmak üzere yapılandırılmış bir istemcinin örneğini oluşturur. Bu istemci, Model Çıkarımı API'sine bir arabirim işlevi görür.

Referanslar:

Uç noktanız Microsoft Entra ID destekliyorsa istemciyi oluşturmak için aşağıdaki kodu kullanın:

import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.chat_models.inference import AzureAIChatCompletionsModel

model = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_AI_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
    model="Mistral-Large-3",
)

Not

Microsoft Entra ID kullanırken uç noktanın bu kimlik doğrulama yöntemiyle dağıtıldığından ve bunu çağırmak için gerekli izinlere sahip olduğunuzdan emin olun.

Zaman uyumsuz çağrılar kullanmayı planlıyorsanız kimlik bilgilerinin zaman uyumsuz sürümünü kullanın:

from azure.identity.aio import (
    DefaultAzureCredential as DefaultAzureCredentialAsync,
)
from langchain_azure_ai.chat_models.inference import AzureAIChatCompletionsModel

model = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_AI_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredentialAsync(),
    model="Mistral-Large-3",
)

Uç noktanız tek bir modele (örneğin sunucusuz API dağıtımları) hizmet verirse parametresini eklemeyin model :

import os
from langchain_azure_ai.chat_models.inference import AzureAIChatCompletionsModel

model = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_AI_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_AI_CREDENTIAL"],
)

Kurulumunuzu doğrulama

Basit bir çağrıyla istemci bağlantınızı test edin:

response = model.invoke("Say hello")
print(response.content)

Bunun yaptığı şey: Kimlik doğrulamasını ve bağlantıyı doğrulamak için modeli basit bir istemle çağırır. Beklenen çıkış: Modelden bir selamlama iletisi (örneğin, "Merhaba! Bugün size nasıl yardımcı olabilirim?").

Referanslar:

Sohbet tamamlama modellerini kullanma

Modeli doğrudan kullanın. ChatModels , LangChain Runnable arabiriminin örnekleridir ve bu arabirimlerle etkileşime geçmek için standart bir yol sağlar. Modeli çağırmak için invoke yöntemine bir ileti listesi geçirin.

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="Translate the following from English into Italian"),
    HumanMessage(content="hi!"),
]

model.invoke(messages)

Bu kod parçacığının yaptığı iş: Yanıt oluşturmak için modelin HumanMessage yöntemine ve SystemMessage nesnelerinin invoke() listesini geçirmeyi gösterir.

Referanslar:

Gerektiğinde zincirleme işlemler oluşturun. Cümleleri çevirmek için istem şablonu kullanın:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
    [("system", system_template), ("user", "{text}")]
)

Bu zincir language ve text girişlerini alır. Şimdi bir çıkış ayrıştırıcısı oluşturun:

from langchain_core.output_parsers import StrOutputParser

parser = StrOutputParser()

Bu kod parçacığının yaptığı iş: Modelin çıkışını dize biçimine dönüştüren, ek meta verileri ayıklayan bir yapı oluşturur.

Referanslar:

Boru (|) işlecini kullanarak şablon, model ve çıkış ayrıştırıcısını birleştirin:

chain = prompt_template | model | parser

language ve text değerlerini sağlayarak invoke yöntemini kullanın ve zinciri çağırın.

chain.invoke({"language": "italian", "text": "hi"})

Birden çok LLM'i birbirine zincirleme

Foundry'deki modeller ortak bir Model Çıkarımı API'sini kullanıma sağladığından, birden çok LLM işlemini zincirleyebilir ve her adım için en uygun modeli seçebilirsiniz.

Aşağıdaki örnekte iki model istemcisi oluşturursunuz: bir üretici ve bir doğrulayıcı. Ayrımı net hale getirmek için Model Çıkarım API'si gibi çok modelli bir uç nokta kullanın ve parametresini model oluşturma için büyük bir modele ve doğrulama için küçük bir modele geçirin. İçerik oluşturmak için genellikle daha büyük bir model gerekirken doğrulama daha küçük bir model kullanabilir.

from langchain_azure_ai.chat_models import AzureAIChatCompletionsModel

producer = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model="Mistral-Large-3",
)

verifier = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model="mistral-small",
)

Bu snippet'in yaptığı: İçerik oluşturma için AzureAIChatCompletionsModel ve doğrulama için Mistral-Large-3 kullanılarak iki ayrı Mistral-Small istemci örneği oluşturur, farklı görevler için farklı modellerin nasıl seçileceğini gösterir.

Referanslar:

Ipucu

En iyi kullanım örneklerini anlamak için her modelin model kartını gözden geçirin.

Aşağıdaki örnek, bir şehir şairi tarafından yazılmış bir şiir oluşturur:

from langchain_core.prompts import PromptTemplate

producer_template = PromptTemplate(
    template="You are an urban poet, your job is to come up \
             verses based on a given topic.\n\
             Here is the topic you have been asked to generate a verse on:\n\
             {topic}",
    input_variables=["topic"],
)

verifier_template = PromptTemplate(
    template="You are a verifier of poems, you are tasked\
              to inspect the verses of poem. If they consist of violence and abusive language\
              report it. Your response should be only one word either True or False.\n \
              Here is the lyrics submitted to you:\n\
              {input}",
    input_variables=["input"],
)

Bu kod parçacığının yaptığı iş: Bir istem şablonu oluşturur ve yaratıcı içerik (bu örnekte bir şiir) üretmek amacıyla producer model istemcisine bağlar.

Parçaları birbirine bağlayın:

chain = producer_template | producer | parser | verifier_template | verifier | parser

Bu kod parçacığının yaptığı iş: Oluşturulan içeriği doğrulamak veya gözden geçirmek için oluşturulan şiiri model aracılığıyla verifier zincirleyerek yapımcı-doğrulayıcı iş akışını gösterir.

Önceki zincir yalnızca verifier adımının çıktısını döndürür. tarafından oluşturulan ara sonuçlara erişmek için producer, o ara adımın çıktısını almak amacıyla bir RunnablePassthrough kullanın.

from langchain_core.runnables import RunnablePassthrough, RunnableParallel

generate_poem = producer_template | producer | parser
verify_poem = verifier_template | verifier | parser

chain = generate_poem | RunnableParallel(poem=RunnablePassthrough(), verification=RunnablePassthrough() | verify_poem)

yöntemini kullanarak zinciri çağırın invoke :

chain.invoke({"topic": "living in a foreign country"})

Bu kod parçacığının yaptığı iş: Hem oluşturulan içeriği hem de doğrulama sonucunu döndüren bir konu girişiyle tam üretici-doğrulayıcı zincirini çağırır. Beklenen çıkış: Oluşturulan şiir ve doğrulama yanıtını içeren poem ve verification anahtarları içeren bir JSON nesnesi.

Referanslar:

Ekleme modellerini kullanma

Benzer şekilde bir embeddings istemcisi oluşturun. Ortam değişkenlerini bir ekleme modeline işaret eden şekilde ayarlayın:

export AZURE_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_INFERENCE_CREDENTIAL="<your-key-goes-here>"

İstemciyi oluşturun:

import os
from langchain_azure_ai.embeddings import AzureAIEmbeddingsModel

embed_model = AzureAIEmbeddingsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model="text-embedding-3-large",
)

Bu kod parçacığının yaptığı iş: Bir ekleme istemcisini kullanarak AzureAIEmbeddingsModel kullanarak metni anlamsal arama ve benzerlik karşılaştırmaları için kullanılabilen vektör eklemelerine dönüştürür.

Referanslar:

Bellek içi vektör deposu kullanın:

from langchain_core.vectorstores import InMemoryVectorStore

vector_store = InMemoryVectorStore(embed_model)

Bu kod parçacığının yaptığı iş: Hızlı benzerlik arama işlemleri için eklemeleri depolayan bir bellek içi vektör deposu (InMemoryVectorStore) oluşturur.

Referanslar:

Belge ekleme:

from langchain_core.documents import Document

document_1 = Document(id="1", page_content="foo", metadata={"baz": "bar"})
document_2 = Document(id="2", page_content="thud", metadata={"bar": "baz"})

documents = [document_1, document_2]
vector_store.add_documents(documents=documents)

Bu kod parçacığının yaptığı iş: Eklemeler istemcisini kullanarak belgeleri eklemelere dönüştürür ve daha sonra almak üzere vektör deposuna ekler.

Referanslar:

Benzerliğe göre arama:

results = vector_store.similarity_search(query="thud", k=1)
for doc in results:
    print(f"* {doc.page_content} [{doc.metadata}]")

Bu kod parçacığının yaptığı iş: Ekleme benzerliğine göre sorguya en çok benzeyen belgeleri döndürerek vektör deposunda anlamsal bir arama gerçekleştirir. Beklenen çıkış: Benzerlik puanına göre derecelenmiş ilgili belgelerin listesi.

OpenAI modellerini Azure kullanma

langchain-azure-ai paketiyle Azure OpenAI modelleri kullandığınızda, aşağıdaki uç nokta biçimini kullanın:

import os
from langchain_azure_ai.chat_models.inference import AzureAIChatCompletionsModel

llm = AzureAIChatCompletionsModel(
    endpoint="https://<resource>.openai.azure.com/openai/v1",
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model="gpt-4o"
)

Bu kod parçacığı ne yapar: Azure OpenAI uç noktası biçimini kullanarak Azure OpenAI modelleri için özel olarak yapılandırılmış bir istemci örneği oluşturur. endpoint parametresi Azure OpenAI kaynağınızı gösterir ve credential ortam değişkeninde depolanan API anahtarını kullanır.

Referanslar:

Hata ayıklama ve sorun giderme

Uygulamanızda hata ayıklamanız ve Foundry'deki modellere gönderilen istekleri anlamanız gerekiyorsa tümleştirmenin hata ayıklama özelliklerini kullanın:

İlk olarak, günlüğü istenen düzeye yapılandırın:

import sys
import logging

# Acquire the logger for this client library. Use 'azure' to affect both
# 'azure.core` and `azure.ai.inference' libraries.
logger = logging.getLogger("azure")

# Set the desired logging level. logging.INFO or logging.DEBUG are good options.
logger.setLevel(logging.DEBUG)

# Direct logging output to stdout:
handler = logging.StreamHandler(stream=sys.stdout)
# Or direct logging output to a file:
# handler = logging.FileHandler(filename="sample.log")
logger.addHandler(handler)

# Optional: change the default logging format. Here we add a timestamp.
formatter = logging.Formatter("%(asctime)s:%(levelname)s:%(name)s:%(message)s")
handler.setFormatter(formatter)

Bu kod parçacığının yaptığı iş: LangChain ile Model Çıkarım API'si arasındaki HTTP istekleri ve yanıtları hakkında ayrıntılı bilgileri yakalamak için DEBUG düzeyinde Python günlük kaydını ayarlar.

Referanslar:

İstemcinin örneğini oluştururken logging_enable=Trueclient_kwargs'i ileterek istek yüklerini görebilirsiniz.

import os
from langchain_azure_ai.chat_models import AzureAIChatCompletionsModel

model = AzureAIChatCompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model="Mistral-Large-3",
    client_kwargs={"logging_enable": True},
)

Bu kod parçacığının yaptığı iş: Api etkileşimlerinde hata ayıklamaya yardımcı olan ayrıntılı istek/yanıt yüklerini yakalamak ve görüntülemek için günlüğe kaydetme özelliği etkinleştirilmiş bir istemci oluşturur.

kodunuzda istemciyi her zamanki gibi kullanın.

İzleme

Foundry'de izlemeyi kullanmak için bir izleyici oluşturun. Günlükler Azure Uygulaması Insights'ta depolanır ve Azure İzleyici veya Dökümhane portalı kullanılarak istendiği zaman sorgulanabilir. Her yapay zeka hub'ına ilişkili bir Azure Uygulaması Insights örneği vardır.

Enstrümantasyon bağlantı dizesi alın

Ipucu

Microsoft Foundry portalında sol bölmeyi customize edebileceğinizden, bu adımlarda gösterilenden farklı öğeler görebilirsiniz. Aradığınızı görmüyorsanız ... seçeneğini belirleyin. Sol bölmenin en altında daha fazlası.

Aşağıdaki yöntemlerden birini kullanarak uygulamanızı Azure Uygulaması Insights'a telemetri gönderecek şekilde yapılandırabilirsiniz:

  1. Azure Uygulaması Insights'e doğrudan bağlantı dizesi kullanarak bağlanın:

    1. Foundry portala gidin ve İzleme'yi seçin.

    2. Veri kaynağını yönet'i seçin. Bu ekranda projeyle ilişkili örneği görebilirsiniz.

    3. Bağlantı dizesindeki değeri kopyalayın ve aşağıdaki değişkene ayarlayın:

      import os
      
      application_insights_connection_string = "instrumentation...."
      
  2. Microsoft Foundry SDK'sını ve Foundry Project uç noktasını kullanın:

    1. Paketin azure-ai-projects ortamınızda yüklü olduğundan emin olun.

    2. Foundry portalına gidin.

    3. Foundry proje uç noktası URL'nizi kopyalayın ve aşağıdaki kodda ayarlayın:

      from azure.ai.projects import AIProjectClient
      from azure.identity import DefaultAzureCredential
      
      project_client = AIProjectClient(
          credential=DefaultAzureCredential(),
          endpoint="<your-foundry-project-endpoint-url>",
      )
      
      application_insights_connection_string = project_client.telemetry.get_application_insights_connection_string()
      

İzlemeleri görselleştirme ve yönetme hakkında daha fazla bilgi edinin.

Sonraki adımlar