Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd langchain-azure-ai för att skapa LangChain-appar som anropar modeller som distribuerats i Microsoft Foundry. Modeller med OpenAI-kompatibla API:er kan användas direkt. I den här artikeln skapar du chatt- och inbäddningsklienter, kör promptkedjor och kombinerar generering med verifieringsarbetsflöden.
Förutsättningar
- En Azure-abonnemang. Skapa en kostnadsfritt.
- Ett Foundry-projekt.
- Rollen Azure AI User på Foundry-projektet.
- En distribuerad chattmodell som stöder OpenAI-kompatibla API:er, till exempel
gpt-4.1ellerMistral-Large-3. - En distribuerad inbäddningsmodell, till exempel
text-embedding-3-large. - Python 3.9 eller senare.
Installera de paket som krävs:
pip install -U langchain langchain-azure-ai azure-identity
Viktigt
langchain-azure-ai använder den nya Microsoft Foundry SDK (v2). Om du använder foundry classic använder du langchain-azure-ai[v1], som använder Azure AI Inference SDK (äldre).
Läs mer.
Konfigurera miljön
Ange något av följande anslutningsmönster:
- Projektändpunkt med Microsoft Entra ID (rekommenderas).
- Direktslutpunkt med en API-nyckel.
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>"
Vad det här kodfragmentet gör: Definierar miljövariabler som används av langchain-azure-ai modellklasserna för projektbaserad eller direkt slutpunktsåtkomst.
Använda chattmodeller
Du kan enkelt instansiera en modell med hjälp init_chat_modelav :
from langchain.chat_models import init_chat_model
model = init_chat_model("azure_ai:gpt-4.1")
Viktigt
Användning init_chat_model kräver langchain>=1.2.13. Om du inte kan uppdatera din version konfigurerar du klienter direkt.
Alla Foundry-modeller som stöder OpenAI-kompatibla API:er kan användas med klienten, men de måste distribueras till din Foundry-resurs först. Om du använder project_endpoint (miljövariabeln AZURE_AI_PROJECT_ENDPOINT) krävs Microsoft Entra ID för autentisering och rollen Azure AI-användare.
Vad det här kodfragmentet gör: Skapar en chattmodellklient med hjälp init_chat_model av bekvämlighetsmetoden. Klienten dirigerar till den angivna modellen via slutpunkten för Foundry-projektet eller en direktslutpunkt som konfigurerats i miljön.
Referenser:
Kontrollera konfigurationen
Kör ett enkelt modellanrop:
response = model.invoke("Say hello")
response.pretty_print()
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Vad det här kodfragmentet gör: Skickar en grundläggande uppmaning för att verifiera slutpunkts-, autentiserings- och modellroutning.
Referenser:
Konfigurerbara modeller
Du kan också skapa en körningskonfigurerbar modell genom att ange configurable_fields. När du utelämnar parametern model blir det ett konfigurerbart fält som standard.
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?
Vad det här kodfragmentet gör: Skapar en konfigurerbar modellinstans som gör att du enkelt kan växla modeller vid anrop. Eftersom parametern model saknas i init_chat_modelär det som standard ett konfigurerbart fält och kan skickas med invoke(). Du kan lägga till andra fält så att de kan konfigureras genom att configurable_fieldskonfigurera .
Konfigurera klienter direkt
Du kan också skapa en chattmodellklient med hjälp AzureAIOpenAIApiChatModel av klassen.
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",
)
Som standard AzureAIOpenAIApiChatModel använder openAI-svars-API:et. Du kan ändra det här beteendet genom att skicka 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
)
Köra asynkrona anrop
Använd asynkrona autentiseringsuppgifter om appen anropar modeller med ainvoke. När du använder Microsoft Entra ID för autentisering använder du motsvarande asynkrona implementering för autentiseringsuppgifter:
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())
Tips
Om du kör den här koden i en Jupyter-anteckningsbok kan du använda await main() direkt i stället asyncio.run(main())för .
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Vad det här kodfragmentet gör: Skapar en asynkron klient och kör en icke-blockerande begäran med ainvoke.
Referenser:
Resonemang
Många modeller kan utföra resonemang i flera steg för att komma fram till en slutsats. Detta innebär att dela upp komplexa problem i mindre, mer hanterbara steg.
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 ...
Referenser:
Verktyg på serversidan
OpenAI-modeller som distribueras i Foundry stöder loopar för verktygssamtal på serversidan: modeller kan interagera med webbsökning, kodtolkar och andra verktyg och sedan analysera resultaten i en enda konversationssväng. Om en modell anropar ett verktyg på serversidan innehåller innehållet i svarsmeddelandet innehåll som representerar anropet och resultatet av verktyget.
Viktigt
Verktyg i namnområdet langchain_azure_ai.tools.builtin stöds endast i OpenAI-modeller.
Det här är verktyg från OpenAI som utökar modellens funktioner. En fullständig lista över verktyg som stöds finns i inbyggda verktyg.
I följande exempel visas hur du använder webbsökning:
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))
Vissa verktyg kan kräva konfiguration av andra resurser i projektet. Använd azure-ai-projects för att konfigurera dessa resurser och referera sedan till dem från LangChain/LangGraph.
I följande exempel visas hur du konfigurerar ett filarkiv innan du använder det i ett verktyg:
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,
)
Vad detta kodexempel gör: Ställer in en vektorlagring med en fil i Microsoft Foundry så att en modell senare kan söka i filens innehåll (används med FileSearchTool i nästa kodblock).
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}]
Använd Foundry-modeller i agenter
Använd create_agent med modeller som är anslutna till Foundry för att skapa ReAct-liknande agentloopar:
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.
Verktyg på serversidan kan också användas, men de kräver anrop 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.",
)
Tips
Avbildningsgenereringsverktyget i Foundry kräver att modelldistributionsnamnet skickas för avbildningsgenerering som en del av en rubrik, x-ms-oai-image-generation-deployment. När du använder langchain-azure-aihanteras detta automatiskt. Men om du planerar att använda det här verktyget med langchain-openai, måste du manuellt ange header.
Använda inbäddningsmodeller
Du kan enkelt instansiera en modell med hjälp init_embeddingsav :
from langchain.embeddings import init_embeddings
embed_model = init_embeddings("azure_ai:text-embedding-3-small")
Vad det här kodfragmentet gör: Skapar en inbäddningsmodellklient med hjälp init_embeddings av bekvämlighetsmetoden.
Alla Foundry-modeller som stöder OpenAI-kompatibla API:er kan användas med klienten, men de måste distribueras till din Foundry-resurs först. Om du använder project_endpoint (miljövariabeln AZURE_AI_PROJECT_ENDPOINT) krävs Microsoft Entra ID för autentisering och rollen Azure AI-användare.
Eller skapa inbäddningsklienten med 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",
)
För direkt slutpunkts- och API-nyckelautentisering:
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",
)
Vad det här kodfragmentet gör: Konfigurerar inbäddningsgenerering för arbetsflöden för vektorsökning, hämtning och rangordning.
Referenser:
Exempel: Köra likhetssökning med ett vektorarkiv
Använd ett minnesinternt vektorlager för lokala experiment.
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'}]
Vad det här kodfragmentet gör: Lägger till exempeldokument i ett vektorlager och returnerar det mest liknande dokumentet för en fråga.
Referenser:
Felsöka begäranden med loggning
Aktivera langchain_azure_ai felsökningsloggning för att inspektera begärandeflödet.
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)
Vad den här kodsnutten gör: Konfigurerar Python-loggning för att avge detaljerade SDK-loggar som hjälper till att felsöka problem med slutpunkt eller payload.
Referenser:
Referens för miljövariabler
Du kan konfigurera följande miljövariabler. Dessa värden kan också konfigureras när objekten skapas:
| Variabel | Roll | Exempel | Parameter i konstruktor |
|---|---|---|---|
AZURE_AI_PROJECT_ENDPOINT |
Slutpunkt för foundry-projekt. Användning av projektslutpunkten kräver Microsoft Entra ID autentisering (rekommenderas). | https://contoso.services.ai.azure.com/api/projects/my-project |
project_endpoint |
AZURE_OPENAI_ENDPOINT |
Huvudsida för OpenAI-resurser | https://contoso.openai.azure.com |
Ingen. |
OPENAI_BASE_URL |
Direct OpenAI-kompatibel slutpunkt som används för modellanrop. | https://contoso.services.ai.azure.com/openai/v1 |
endpoint |
OPENAI_API_KEY Eller AZURE_OPENAI_API_KEY |
API-nyckel som används med OPENAI_BASE_URL eller AZURE_OPENAI_ENDPOINT för nyckelbaserad autentisering. |
<your-api-key> |
credential |
AZURE_OPENAI_DEPLOYMENT_NAME |
Modellens distributionsnamn i Foundry- eller OpenAI-resursen. Kontrollera namnet i Foundry-portalen eftersom distributionsnamn kan skilja sig från den underliggande modell som används. Alla modeller som stöder OpenAI-kompatibla API:er kan användas, men alla parametrar kan inte stödjas. | Mistral-Large-3 |
model |
AZURE_OPENAI_API_VERSION |
DEN API-version som ska användas. När en api_version är tillgänglig skapar vi OpenAI-klienterna och matar in api-version frågeparametern via default_query. |
v1 Eller preview |
api_version |
Viktigt
Miljövariabler AZURE_AI_INFERENCE_ENDPOINT och AZURE_AI_CREDENTIALS som används för AzureAIChatCompletionsModel eller AzureAIEmbeddingsModel (äldre) används inte längre.