LangChain gebruiken met modellen in Microsoft Foundry

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

Volgende stap