Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
langchain-azure-ai kullanarak Microsoft Foundry'de dağıtılan modelleri çağıran LangChain uygulamaları oluşturun.
OpenAI uyumlu API'lere sahip modeller doğrudan kullanılabilir. Bu makalede sohbet ve ekleme istemcileri oluşturacak, istem zincirlerini çalıştıracak ve oluşturma işlemini doğrulama iş akışlarıyla birleştiracaksınız.
Önkoşullar
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Dökümhane projesi.
- Foundry projesindeki Azure AI User rolü.
-
gpt-4.1veyaMistral-Large-3gibi OpenAI uyumlu API'leri destekleyen dağıtılmış bir sohbet modeli. -
text-embedding-3-largegibi dağıtılmış bir gömme modeli. - Python 3.9 veya üzeri.
Gerekli paketleri yükleyin:
pip install -U langchain langchain-azure-ai azure-identity
Önemli
langchain-azure-ai yeni Microsoft Döküm SDK'sını (v2) kullanır. Foundry klasik kullanıyorsanız langchain-azure-ai[v1] kullanın; bu, Azure AI Çıkarım SDK'sını (eski) kullanır.
Daha fazla bilgi edinin.
Ortamı yapılandırma
Aşağıdaki bağlantı desenlerinden birini ayarlayın:
- Microsoft Entra ID ile Project uç noktası (önerilir).
- API anahtarıyla doğrudan uç nokta.
import os
# Option 1: Project endpoint (recommended)
os.environ["AZURE_AI_PROJECT_ENDPOINT"] = (
"https://<resource>.services.ai.azure.com/api/projects/<project>"
)
# Option 2: Direct OpenAI-compatible endpoint + API key
os.environ["OPENAI_BASE_URL"] = (
"https://<resource>.services.ai.azure.com/openai/v1"
)
os.environ["OPENAI_API_KEY"] = "<your-api-key>"
Bu kod parçacığının yaptığı iş: Proje tabanlı veya doğrudan uç nokta erişimi için model sınıfları tarafından langchain-azure-ai kullanılan ortam değişkenlerini tanımlar.
Sohbet modellerini kullanma
kullanarak init_chat_modelbir modelin örneğini kolayca oluşturabilirsiniz:
from langchain.chat_models import init_chat_model
model = init_chat_model("azure_ai:gpt-4.1")
Önemli
Kullanmak için init_chat_modellangchain>=1.2.13 gerekir. Sürümünüzü güncelleştiremiyorsanız istemcileri doğrudan yapılandırın.
OpenAI uyumlu API'leri destekleyen tüm Foundry modelleri istemciyle kullanılabilir, ancak önce Foundry kaynağınıza dağıtılması gerekir.
project_endpoint (ortam değişkeni AZURE_AI_PROJECT_ENDPOINT) kullanmak için Microsoft Entra ID ile kimlik doğrulaması ve Azure AI Kullanıcısı rolü gereklidir.
Bu kod parçacığının yaptığı iş: Kolaylık yöntemini kullanarak init_chat_model bir sohbet modeli istemcisi oluşturur. İstemci, belirtilen modele Foundry proje uç noktası veya ortama göre yapılandırılmış doğrudan uç nokta aracılığıyla yönlendirilir.
Referanslar:
Kurulumunuzu doğrulama
Basit bir model çağrısı çalıştırın:
response = model.invoke("Say hello")
response.pretty_print()
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Bu kod parçacığının yaptığı iş: Uç nokta, kimlik doğrulaması ve model yönlendirmesini doğrulamak için temel bir istem gönderir.
Referanslar:
Yapılandırılabilir modeller
ayrıca belirterek configurable_fieldsçalışma zamanı yapılandırılabilir bir model de oluşturabilirsiniz. parametresini model atladığınızda, varsayılan olarak yapılandırılabilir bir alan haline gelir.
from langchain.chat_models import init_chat_model
from azure.identity import DefaultAzureCredential
configurable_model = init_chat_model(
model_provider="azure_ai",
temperature=0,
credential=DefaultAzureCredential()
)
configurable_model.invoke(
"what's your name",
config={"configurable": {"model": "gpt-5-nano"}}, # Run with GPT-5-nano
).pretty_print()
configurable_model.invoke(
"what's your name",
config={"configurable": {"model": "Mistral-Large-3"}}, # Run with Mistral Large
).pretty_print()
================================== Ai Message ==================================
Hi! I'm ChatGPT, an AI assistant built by OpenAI. You can call me ChatGPT or just Assistant. How can I help you today?
================================== Ai Message ==================================
I don't have a name, but you can call me **Assistant** or anything you like! 😊 What can I help you with today?
Bu kod parçacığının yaptığı iş: Çağırma zamanında modelleri kolayca değiştirmenizi sağlayan yapılandırılabilir bir model örneği oluşturur.
model parametresi içinde init_chat_modeleksik olduğundan, varsayılan olarak yapılandırılabilir bir alandır ve ile invoke()geçirilebilir.
configurable_fields yapılandırarak, yapılandırılabilir olacak başka alanlar ekleyebilirsiniz.
İstemcileri doğrudan yapılandırın
Sınıf kullanarak AzureAIOpenAIApiChatModel sohbet modeli istemcisi de oluşturabilirsiniz.
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.chat_models import AzureAIOpenAIApiChatModel
model = AzureAIOpenAIApiChatModel(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
model="Mistral-Large-3",
)
Varsayılan olarak OpenAI AzureAIOpenAIApiChatModel Yanıtları API'sini kullanır.
use_responses_api=False geçirerek bu davranışı değiştirebilirsiniz.
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.chat_models import AzureAIOpenAIApiChatModel
model = AzureAIOpenAIApiChatModel(
endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
model="Mistral-Large-3",
use_responses_api=False
)
Zaman uyumsuz çağrıları çalıştırma
Uygulamanız ainvoke modellerini çağırıyorsa, zaman uyumsuz kimlik bilgilerini kullanın. Kimlik doğrulaması için Microsoft Entra ID kullanırken, kimlik bilgileri için ilgili zaman uyumsuz uygulamayı kullanın:
import os
from azure.identity.aio import DefaultAzureCredential as DefaultAzureCredentialAsync
from langchain_azure_ai.chat_models import AzureAIOpenAIApiChatModel
model = AzureAIOpenAIApiChatModel(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
credential=DefaultAzureCredentialAsync(),
model="gpt-4.1",
)
async def main():
response = await model.ainvoke("Say hello asynchronously")
response.pretty_print()
import asyncio
asyncio.run(main())
Ipucu
Bu kodu bir Jupyter not defterinde çalıştırırsanız, yerine await main()doğrudan kullanabilirsinizasyncio.run(main()).
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Bu kod parçacığının yaptığı iş: Zaman uyumsuz bir istemci oluşturur ve ainvoke ile bloklanmayan bir istek çalıştırır.
Referanslar:
Akıl
Birçok model, bir sonuca ulaşmak için çok adımlı mantık gerçekleştirebilir. Bu, karmaşık sorunları daha küçük ve daha yönetilebilir adımlara ayırmayı içerir.
from langchain.chat_models import init_chat_model
model = init_chat_model("azure_ai:DeepSeek-R1-0528")
for chunk in model.stream("Why do parrots have colorful feathers?"):
reasoning_steps = [r for r in chunk.content_blocks if r["type"] == "reasoning"]
print(reasoning_steps if reasoning_steps else chunk.text, end="")
print("\n")
Parrots have colorful feathers primarily due to a combination of evolutionary ...
Referanslar:
Sunucu tarafı araçları
Foundry'de dağıtılan OpenAI modelleri sunucu tarafı araç çağırma döngülerini destekler: modeller web araması, kod yorumlayıcıları ve diğer araçlarla etkileşime girip sonuçları tek bir konuşma dönüşünde analiz edebilir. Model bir araç sunucu tarafı çağırırsa, yanıt iletisinin içeriği aracın çağrısını ve sonucunu temsil eden içeriği içerir.
Önemli
Ad alanı langchain_azure_ai.tools.builtin içindeki araçlar yalnızca OpenAI modellerinde desteklenir.
Bunlar OpenAI tarafından sağlanan ve modelin özelliklerini genişleten araçlardır. Desteklenen araçların tam listesini görmek için bkz. yerleşik araçlar.
Aşağıdaki örnekte web aramasının nasıl kullanılacağı gösterilmektedir:
from langchain.chat_models import init_chat_model
from langchain_azure_ai.tools.builtin import WebSearchTool
from azure.identity import DefaultAzureCredential
model = init_chat_model("azure_ai:gpt-4.1", credential=DefaultAzureCredential())
model_with_web_search = model.bind_tools([WebSearchTool()])
result = model_with_web_search.invoke("What is the current price of gold? Give me the answer in one sentence.")
result.content[-1]["text"]
As of today, March 24, 2026, the spot price of gold is approximately $4,397.80 per ounce. ([tradingeconomics.com](https://tradingeconomics.com/commodity/gold))
Bazı araçlar projenizdeki diğer kaynakların yapılandırılması gerektirebilir. Bu kaynakları yapılandırmak ve ardından LangChain/LangGraph'dan bunlara başvurmak için kullanın azure-ai-projects .
Aşağıdaki örnekte, bir araçta kullanmadan önce dosya deposunun nasıl yapılandırılır gösterilmektedir:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Create clients to call Foundry API
project = AIProjectClient(
endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()
# Create vector store and upload file
vector_store = openai.vector_stores.create(name="ProductInfoStore")
vector_store_id = vector_store.id
with open("product_info.md", "rb") as file_handle:
vector_store_file = openai.vector_stores.files.upload_and_poll(
vector_store_id=vector_store.id,
file=file_handle,
)
Bu kod parçacığının yaptığı iş: Modelin daha sonra söz konusu dosyanın içeriğini (sonraki kod bloğunda FileSearchTool ile birlikte) arayabilmesi için Microsoft Foundry'de dosya içeren bir vektör deposu ayarlar.
from langchain_azure_ai.tools.builtin import FileSearchTool
model_with_tools = model.bind_tools([FileSearchTool(vector_store_ids=[vector_store.id])])
results = model_with_tools.invoke("Tell me about Contoso products")
print("Answer:", results.content[-1]["text"])
print("Annotations:", results.content[-1]["annotations"])
Answer: Contoso offers the following products:
1. **The widget**
- Description: A high-quality widget that is perfect for all your widget needs.
- Price: $19.99
2. **The gadget**
- Description: An advanced gadget that offers exceptional performance and reliability.
- Price: $49.99
These products are part of Contoso's main offerings as detailed in their product information documentation.
Annotations: [{'file_id': 'assistant-MvU5SEqUcUBumoLUV5BXxn', 'filename': 'product_info.md', 'type': 'file_citation', 'file_index': 395}]
Aracılarda Foundry modellerini kullanma
ReAct tarzı araç döngüleri oluşturmak için create_agent ile Foundry'ye bağlı modelleri kullanın.
from langchain.agents import create_agent
agent = create_agent(
model="azure_ai:gpt-5.2",
system_prompt="You're an informational agent. Answer questions cheerfully.",
)
response = agent.invoke({"messages": "what's your name?"})
response["messages"][-1].pretty_print()
================================== Ai Message ==================================
I’m ChatGPT, your AI assistant.
Sunucu tarafı araçları da kullanılabilir, ancak çağrılması gerekir bind_tools.
from langchain.chat_models import init_chat_model
from langchain.agents import create_agent
from langchain_azure_ai.tools.builtin import ImageGenerationTool
model = init_chat_model("azure_ai:gpt-5.2")
tools = [ImageGenerationTool(model="gpt-image-1.5", size="1024x1024")]
model_with_tools = model.bind_tools(tools)
agent = create_agent(
model=model_with_tools,
tools=tools,
system_prompt="You're an informational agent. Answer questions with graphics.",
)
Ipucu
Foundry'deki görüntü oluşturma aracı, model dağıtım adının bir üst bilgiye dahil edilmesini, böylece görüntü oluşturmanın sağlanmasını gerektirir. x-ms-oai-image-generation-deployment kullanılırken langchain-azure-aibu işlem otomatik olarak işlenir. Ancak, bu aracı langchain-openai ile kullanmayı planlıyorsanız, üst bilgiyi el ile vermeniz gerekir.
Ekleme modellerini kullanma
kullanarak init_embeddingsbir modelin örneğini kolayca oluşturabilirsiniz:
from langchain.embeddings import init_embeddings
embed_model = init_embeddings("azure_ai:text-embedding-3-small")
Bu kod parçacığının yaptığı iş: Kolaylık yöntemini kullanarak init_embeddings bir ekleme modeli istemcisi oluşturur.
OpenAI uyumlu API'leri destekleyen tüm Foundry modelleri istemciyle kullanılabilir, ancak önce Foundry kaynağınıza dağıtılması gerekir.
project_endpoint (ortam değişkeni AZURE_AI_PROJECT_ENDPOINT) kullanmak için Microsoft Entra ID ile kimlik doğrulaması ve Azure AI Kullanıcısı rolü gereklidir.
veya AzureAIOpenAIApiEmbeddingsModel ile embeddings istemcisini oluşturabilirsiniz.
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.embeddings import AzureAIOpenAIApiEmbeddingsModel
embed_model = AzureAIOpenAIApiEmbeddingsModel(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
model="text-embedding-3-large",
)
Doğrudan uç nokta ve API anahtarı kimlik doğrulaması için:
import os
from langchain_azure_ai.embeddings import AzureAIOpenAIApiEmbeddingsModel
embed_model = AzureAIOpenAIApiEmbeddingsModel(
endpoint=os.environ["OPENAI_BASE_URL"],
credential=os.environ["OPENAI_API_KEY"],
model="text-embedding-3-large",
)
Bu kod parçacığının yaptığı iş: Vektör arama, çıkarım ve sıralama iş akışları için gömme oluşturmayı yapılandırmak.
Referanslar:
Örnek: Vektör deposuyla benzerlik araması çalıştırma
Yerel denemeler için bellek içi vektör deposu kullanın.
from langchain_core.documents import Document
from langchain_core.vectorstores import InMemoryVectorStore
vector_store = InMemoryVectorStore(embed_model)
documents = [
Document(id="1", page_content="foo", metadata={"baz": "bar"}),
Document(id="2", page_content="thud", metadata={"bar": "baz"}),
]
vector_store.add_documents(documents=documents)
results = vector_store.similarity_search(query="thud", k=1)
for doc in results:
print(f"* {doc.page_content} [{doc.metadata}]")
* thud [{'bar': 'baz'}]
Bu kod parçacığının yaptığı iş: Vektör deposuna örnek belgeler ekler ve sorgu için en benzer belgeyi döndürür.
Referanslar:
Günlüğe kaydetme ile isteklerde hata ayıklama
İstek akışını incelemek için hata ayıklama günlüğünü etkinleştirinlangchain_azure_ai.
import logging
import sys
logger = logging.getLogger("langchain_azure_ai")
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(stream=sys.stdout)
formatter = logging.Formatter(
"%(asctime)s:%(levelname)s:%(name)s:%(message)s"
)
handler.setFormatter(formatter)
logger.addHandler(handler)
Bu kod parçacığı: Uç nokta veya yük sorunlarını gidermeye yardımcı olan ayrıntılı SDK logları çıkarmak üzere Python günlüğünü yapılandırır.
Referanslar:
Ortam değişkenleri rehberi
Aşağıdaki ortam değişkenlerini yapılandırabilirsiniz. Bu değerler, nesneleri oluştururken de yapılandırılabilir:
| Değişken | Rolü | Örnek | Oluşturucuda parametre |
|---|---|---|---|
AZURE_AI_PROJECT_ENDPOINT |
Dökümhane proje uç noktası. Proje uç noktasının kullanılması için Microsoft Entra ID kimlik doğrulaması gerekir (önerilir). | https://contoso.services.ai.azure.com/api/projects/my-project |
project_endpoint |
AZURE_OPENAI_ENDPOINT |
OpenAI kaynaklarını destekleyin. | https://contoso.openai.azure.com |
Hiçbiri. |
OPENAI_BASE_URL |
OpenAI uyumlu doğrudan uç nokta model çağrıları için kullanılır. | https://contoso.services.ai.azure.com/openai/v1 |
endpoint |
OPENAI_API_KEY Veya AZURE_OPENAI_API_KEY |
Veya OPENAI_BASE_URL ile AZURE_OPENAI_ENDPOINT anahtar tabanlı kimlik doğrulaması için kullanılan API anahtarı. |
<your-api-key> |
credential |
AZURE_OPENAI_DEPLOYMENT_NAME |
Modelin Foundry veya OpenAI kaynağındaki dağıtım adı. Dağıtım adlarının kullanılan temel modelden farklı olabileceğini göz önünde bulundurarak, Foundry portalında kayıtlı adı kontrol edin. OpenAI uyumlu API'leri destekleyen tüm modeller kullanılabilir, ancak tüm parametreler desteklenmeyebilir. | Mistral-Large-3 |
model |
AZURE_OPENAI_API_VERSION |
Kullanılacak API sürümü.
api_version kullanılabilir olduğunda OpenAI istemcilerini oluşturur ve default_query aracılığıyla api-version sorgu parametresini ekleriz. |
v1 Veya preview |
api_version |
Önemli
Artık AzureAIChatCompletionsModel veya AzureAIEmbeddingsModel (eski) için kullanılan AZURE_AI_INFERENCE_ENDPOINT ve AZURE_AI_CREDENTIALS ortam değişkenleri kullanılmıyor.