Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik langchain-azure-ai om LangChain-apps te bouwen die modellen aanroepen die zijn geïmplementeerd in Microsoft Foundry. Modellen met openAI-compatibele API's kunnen rechtstreeks worden gebruikt. In dit artikel maakt u chat- en insluitingsclients, voert u promptketens uit en combineert u het genereren met verificatiewerkstromen.
Voorwaarden
- Een Azure-abonnement. Maak er gratis een.
- Een Foundry-project.
- De rol Azure AI User in het Foundry-project.
- Een geïmplementeerd chatmodel dat ondersteuning biedt voor openAI-compatibele API's, zoals
gpt-4.1ofMistral-Large-3. - Een geïmplementeerd insluitingsmodel, zoals
text-embedding-3-large. - Python 3,9 of hoger.
Installeer de vereiste pakketten:
pip install -U langchain langchain-azure-ai azure-identity
Belangrijk
langchain-azure-ai maakt gebruik van de nieuwe Microsoft Foundry SDK (v2). Als u Foundry Classic gebruikt, gebruikt u langchain-azure-ai[v1], die gebruikmaakt van de Azure AI Inference SDK (legacy).
Meer informatie.
De omgeving configureren
Stel een van de volgende verbindingspatronen in:
- Projecteindpunt met Microsoft Entra ID (aanbevolen).
- Direct eindpunt met een API-sleutel.
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>"
Wat dit codefragment doet: Definieert omgevingsvariabelen die worden gebruikt door de langchain-azure-ai modelklassen voor projectgebaseerde of directe eindpunttoegang.
Chatmodellen gebruiken
U kunt eenvoudig een model instantiëren met behulp van init_chat_model:
from langchain.chat_models import init_chat_model
model = init_chat_model("azure_ai:gpt-4.1")
Belangrijk
Voor het gebruik init_chat_model is vereist langchain>=1.2.13. Als u uw versie niet kunt bijwerken, configureert u clients rechtstreeks.
Alle Foundry-modellen die openAI-compatibele API's ondersteunen, kunnen worden gebruikt met de client, maar ze moeten eerst worden geïmplementeerd in uw Foundry-resource. Voor het gebruik van project_endpoint (omgevingsvariabele AZURE_AI_PROJECT_ENDPOINT) is Microsoft Entra ID vereist voor verificatie en de rol Azure AI-gebruiker.
Wat dit codefragment doet: Hiermee maakt u een chatmodelclient met behulp van de init_chat_model gemaksmethode. De client routeert naar het opgegeven model via het Foundry-projecteindpunt of het directe eindpunt dat in de omgeving is geconfigureerd.
Verwijzingen:
Uw installatie controleren
Voer een eenvoudige model-aanroep uit:
response = model.invoke("Say hello")
response.pretty_print()
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Wat dit codefragment doet: Hiermee wordt een basisprompt verzonden om eindpunt, verificatie en modelroutering te verifiëren.
Verwijzingen:
Configureerbare modellen
U kunt ook een runtime-configureerbaar model maken door op te configurable_fieldsgeven. Wanneer u de model parameter weglaat, wordt deze standaard een configureerbaar veld.
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?
Wat dit codefragment doet: Hiermee maakt u een configureerbaar modelexemplaar waarmee u eenvoudig modellen kunt wisselen bij oproep. Omdat de model parameter ontbreekt init_chat_model, is dit standaard een configureerbaar veld en kan worden doorgegeven met invoke(). U kunt andere velden toevoegen die kunnen worden geconfigureerd door deze te configurable_fieldsconfigureren.
Clients rechtstreeks configureren
U kunt ook een chatmodelclient maken met behulp van AzureAIOpenAIApiChatModel klasse.
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",
)
AzureAIOpenAIApiChatModel Standaard wordt de OpenAI-antwoord-API gebruikt. U kunt dit gedrag wijzigen door het volgende door te geven use_responses_api=False:
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
)
Asynchrone aanroepen uitvoeren
Gebruik asynchrone referenties als uw app modellen aanroept met ainvoke. Wanneer u Microsoft Entra ID gebruikt voor authenticatie, gebruikt u de bijbehorende asynchrone implementatie voor inloggegevens:
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())
Tip
Als u deze code uitvoert in een Jupyter-notebook, kunt u deze rechtstreeks gebruiken await main() in plaats van asyncio.run(main()).
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Wat dit codefragment doet: Hiermee maakt u een asynchrone client en voert u een niet-blokkerende aanvraag uit met ainvoke.
Verwijzingen:
Redenering
Veel modellen kunnen redeneringen in meerdere stappen uitvoeren om tot een conclusie te komen. Dit omvat het opsplitsen van complexe problemen in kleinere, beter beheerbare stappen.
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 ...
Verwijzingen:
Hulpprogramma's aan serverzijde
OpenAI-modellen die zijn geïmplementeerd in Foundry ondersteunen hulpprogramma-aanroep lussen aan de serverzijde: modellen kunnen interacties aangaan met webzoekopdrachten, code-interpreters en andere tools en vervolgens de resultaten analyseren in een enkele conversatie beurt. Als een model een tool aanroept aan de serverzijde, bevat de inhoud van het antwoordbericht inhoud die de aanroep en het resultaat van het hulpprogramma vertegenwoordigt.
Belangrijk
Hulpprogramma's in de naamruimte langchain_azure_ai.tools.builtin worden alleen ondersteund in OpenAI-modellen.
Dit zijn hulpprogramma's van OpenAI waarmee de mogelijkheden van het model worden uitgebreid. Zie ingebouwde hulpprogramma's voor een volledige lijst met ondersteunde hulpprogramma's.
In het volgende voorbeeld ziet u hoe u webzoekopdrachten gebruikt:
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))
Voor sommige hulpprogramma's is mogelijk configuratie van andere resources in uw project vereist. Gebruik azure-ai-projects om deze resources te configureren en ze vervolgens te refereren vanuit LangChain/LangGraph.
In het volgende voorbeeld ziet u hoe u een bestandsarchief configureert voordat u het in een hulpprogramma gebruikt:
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,
)
Wat dit fragment doet: stelt een vectoropslag in met een bestand in Microsoft Foundry, zodat een model later de inhoud van dat bestand kan doorzoeken (gebruikt met de FileSearchTool in het volgende codeblok).
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}]
Foundry-modellen gebruiken in agents
Gebruik create_agent met modellen die zijn verbonden met Foundry om ReAct-stijl agentloops te maken.
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.
Hulpprogramma's aan de serverzijde kunnen ook worden gebruikt, maar hiervoor is aanroepen bind_toolsvereist.
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.",
)
Tip
Het hulpprogramma voor het genereren van installatiekopieën in Foundry vereist het doorgeven van de naam van de modelimplementatie voor het genereren van installatiekopieën als onderdeel van een header. x-ms-oai-image-generation-deployment Wanneer u dit gebruikt langchain-azure-ai, wordt dit automatisch afgehandeld. Als u echter van plan bent dit hulpprogramma met langchain-openai te gebruiken, moet u de header handmatig doorgeven.
Insluitmodellen gebruiken
U kunt eenvoudig een model instantiëren met behulp van init_embeddings:
from langchain.embeddings import init_embeddings
embed_model = init_embeddings("azure_ai:text-embedding-3-small")
Wat dit codefragment doet: Hiermee maakt u een insluitingsmodelclient met behulp van de init_embeddings handige methode.
Alle Foundry-modellen die openAI-compatibele API's ondersteunen, kunnen worden gebruikt met de client, maar ze moeten eerst worden geïmplementeerd in uw Foundry-resource. Voor het gebruik van project_endpoint (omgevingsvariabele AZURE_AI_PROJECT_ENDPOINT) is Microsoft Entra ID vereist voor verificatie en de rol Azure AI-gebruiker.
Of maak de insluitingsclient met AzureAIOpenAIApiEmbeddingsModel.
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",
)
Voor directe eindpunt- en API-sleutelverificatie:
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",
)
Wat dit codefragment doet: Hiermee configureert u het genereren van insluitingen voor vectorzoekopdrachten, het ophalen en rangschikken van werkstromen.
Verwijzingen:
Voorbeeld: Overeenkomsten zoeken uitvoeren met een vectorarchief
Gebruik een vectorarchief in het geheugen voor lokale experimenten.
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'}]
Wat dit codefragment doet: Voegt voorbeelddocumenten toe aan een vectorarchief en retourneert het meest vergelijkbare document voor een query.
Verwijzingen:
Fouten opsporen in aanvragen met logboekregistratie
Schakel langchain_azure_ai logboekregistratie voor foutopsporing in om de aanvraagstroom te controleren.
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)
Wat dit fragment doet: Configureert Python logboekregistratie om gedetailleerde SDK-logboeken te verzenden waarmee problemen met eindpunten of nettoladingen kunnen worden opgelost.
Verwijzingen:
Naslaginformatie over omgevingsvariabelen
U kunt de volgende omgevingsvariabelen configureren. Deze waarden kunnen ook worden geconfigureerd bij het samenstellen van de objecten:
| Variabele | Rol | Voorbeeld | Parameter in constructor |
|---|---|---|---|
AZURE_AI_PROJECT_ENDPOINT |
Foundry-projecteindpunt. Voor het gebruik van het projecteindpunt is Microsoft Entra ID verificatie vereist (aanbevolen). | https://contoso.services.ai.azure.com/api/projects/my-project |
project_endpoint |
AZURE_OPENAI_ENDPOINT |
Hoofdmap voor OpenAI-resources. | https://contoso.openai.azure.com |
Geen. |
OPENAI_BASE_URL |
Direct OpenAI-compatibel eindpunt dat wordt gebruikt voor modelaanvragen. | https://contoso.services.ai.azure.com/openai/v1 |
endpoint |
OPENAI_API_KEY Of AZURE_OPENAI_API_KEY |
API-sleutel die wordt gebruikt met OPENAI_BASE_URL of AZURE_OPENAI_ENDPOINT voor verificatie op basis van sleutels. |
<your-api-key> |
credential |
AZURE_OPENAI_DEPLOYMENT_NAME |
De implementatienaam van het model in de Foundry- of OpenAI-resource. Controleer de naam in de Foundry-portal omdat implementatienamen kunnen afwijken van het onderliggende model dat wordt gebruikt. Elk model dat openAI-compatibele API's ondersteunt, kan worden gebruikt, maar niet alle parameters worden mogelijk ondersteund. | Mistral-Large-3 |
model |
AZURE_OPENAI_API_VERSION |
De API-versie die moet worden gebruikt. Wanneer een api_version beschikbaar is, maken we de OpenAI-clients en injecteren we de api-version queryparameter via default_query. |
v1 Of preview |
api_version |
Belangrijk
Omgevingsvariabelen AZURE_AI_INFERENCE_ENDPOINT en AZURE_AI_CREDENTIALS gebruikt voor AzureAIChatCompletionsModel of AzureAIEmbeddingsModel (verouderd) worden niet meer gebruikt.