Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí langchain-azure-ai sestavte aplikace LangChain, které volají modely nasazené v Microsoft Foundry. Modely s rozhraními API kompatibilními s OpenAI je možné použít přímo. V tomto článku vytvoříte klienty chatu a embeddingy, spustíte řetězce příkazů a zkombinujete generování s ověřovacími pracovními postupy.
Požadavky
Předplatné Azure. Vytvořte si ho zdarma.
Role Foundry User v projektu Foundry.
Důležité
Nedávno byly přejmenovány role Foundry RBAC. Foundry User, Foundry Owner, Foundry Account Owner a Foundry Project Manager se dříve nazývaly Uživatel Azure AI, Vlastník Azure AI, Vlastník účtu Azure AI a Správce projektů Azure AI. Během zavádění přejmenování se stále můžou zobrazovat předchozí názvy na některých místech. ID rolí a základní oprávnění se při přejmenování nezmění.
Nasazený chatovací model, který podporuje rozhraní API kompatibilní s OpenAI, například
gpt-4.1neboMistral-Large-3.Nasazený model vkládání, například
text-embedding-3-large.Python verze 3.9 nebo novější.
Nainstalujte požadované balíčky:
pip install -U langchain langchain-azure-ai azure-identity
Důležité
langchain-azure-ai používá novou sadu Microsoft Foundry SDK (v2). Pokud používáte Foundry Classic, použijte langchain-azure-ai[v1], která používá sadu SDK pro odvozování AI Azure (starší verze).
Další informace
Konfigurace prostředí
Nastavte jeden z následujících vzorů připojení:
- Projekt koncový bod s Microsoft Entra ID (doporučeno).
- Přímý koncový bod s klíčem rozhraní API
import os
# Option 1: Project endpoint (recommended)
os.environ["FOUNDRY_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>"
Co tento fragment kódu dělá: Definuje proměnné prostředí používané třídami langchain-azure-ai modelu pro přístup k projektovým nebo přímým koncovým bodům.
Použití chatovacích modelů
Můžete snadno vytvořit instanci modelu pomocí init_chat_model.
from langchain.chat_models import init_chat_model
model = init_chat_model("azure_ai:gpt-4.1")
Důležité
Použití init_chat_model vyžaduje langchain>=1.2.13. Pokud nemůžete aktualizovat verzi, nakonfigurujte klienty přímo.
Všechny modely Foundry podporující rozhraní API kompatibilní s OpenAI je možné použít s klientem, musíte je ale nejprve nasadit do prostředku Foundry. Použití project_endpoint (proměnné prostředí FOUNDRY_PROJECT_ENDPOINT) vyžaduje Microsoft Entra ID pro ověřování a roli Foundry User.
Co tento fragment kódu dělá: Vytvoří klienta modelu chatu pomocí init_chat_model metody pohodlí. Klient směruje do zadaného modelu prostřednictvím koncového bodu projektu Foundry nebo přímého koncového bodu nakonfigurovaného v prostředí.
Odkazy:
Ověření nastavení
Spusťte jednoduché spuštění modelu
response = model.invoke("Say hello")
response.pretty_print()
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Co tento fragment kódu dělá: Odešle základní výzvu k ověření koncového bodu, ověřování a směrování modelu.
Odkazy:
Konfigurovatelné modely
Můžete také vytvořit model konfigurovatelný za běhu zadáním configurable_fields. Když parametr vynecháte model , stane se ve výchozím nastavení konfigurovatelným polem.
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?
Co tento fragment kódu dělá: Vytvoří konfigurovatelnou instanci modelu, která umožňuje snadno přepínat modely při vyvolání. Vzhledem k tomu, že parametr model chybí v init_chat_model, je ve výchozím nastavení konfigurovatelným polem a lze ho předat s invoke(). Další pole, která lze konfigurovat, můžete přidat konfigurací configurable_fields.
Přímá konfigurace klientů
Klienta modelu chatu můžete vytvořit také pomocí AzureAIOpenAIApiChatModel třídy.
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.chat_models import AzureAIOpenAIApiChatModel
model = AzureAIOpenAIApiChatModel(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
model="Mistral-Large-3",
)
Ve výchozím nastavení AzureAIOpenAIApiChatModel používá rozhraní API pro odpovědi OpenAI. Toto chování můžete změnit předáním use_responses_api=False:
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.chat_models import AzureAIOpenAIApiChatModel
model = AzureAIOpenAIApiChatModel(
endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
model="Mistral-Large-3",
use_responses_api=False
)
Spouštění asynchronních volání
Pokud vaše aplikace volá modely pomocí ainvoke, použijte asynchronní přihlašovací údaje. Při použití Microsoft Entra ID pro ověřování použijte odpovídající asynchronní implementaci přihlašovacích údajů:
import os
from azure.identity.aio import DefaultAzureCredential as DefaultAzureCredentialAsync
from langchain_azure_ai.chat_models import AzureAIOpenAIApiChatModel
model = AzureAIOpenAIApiChatModel(
project_endpoint=os.environ["FOUNDRY_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
Pokud tento kód spustíte v poznámkovém bloku Jupyter, můžete přímo použít await main() místo asyncio.run(main()).
================================== Ai Message ==================================
Hello! 👋 How can I help you today?
Co tento fragment kódu dělá: Vytvoří asynchronního klienta a spustí neblokující požadavek s ainvoke.
Odkazy:
Uvažování
Mnoho modelů může provést vícekrokové uvažování, aby dospělo k závěru. To zahrnuje rozdělení složitých problémů do menších a lépe spravovatelných kroků.
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 ...
Odkazy:
Nástroje na straně serveru
Modely OpenAI nasazené v Foundry podporují smyčky volání nástrojů na straně serveru: modely můžou pracovat s webovým vyhledáváním, interprety kódu a dalšími nástroji a pak analyzovat výsledky jediným konverzačním turnem. Pokud model vyvolá nástroj na straně serveru, obsah zprávy odpovědi bude obsahovat obsah představující vyvolání a výsledek nástroje.
Důležité
Nástroje v oboru názvů langchain_azure_ai.tools.builtin jsou podporovány pouze v modelech OpenAI.
Tyto nástroje poskytuje OpenAI, které rozšiřují možnosti modelu. Úplný seznam podporovaných nástrojů najdete v předdefinovaných nástrojích.
Následující příklad ukazuje, jak používat vyhledávání na webu:
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))
Některé nástroje můžou vyžadovat konfiguraci jiných prostředků v projektu. Použijte azure-ai-projects ke konfiguraci těchto prostředků a pak na ně referujte z LangChain/LangGraph.
Následující příklad ukazuje, jak nakonfigurovat úložiště souborů před použitím v nástroji:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Create clients to call Foundry API
project = AIProjectClient(
endpoint=os.environ["FOUNDRY_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,
)
Co tento fragment kódu dělá: Nastaví vektorové úložiště se souborem v Microsoft Foundry, aby model mohl později prohledávat obsah daného souboru (používá se s FileSearchTool v dalším bloku kódu).
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}]
Použití modelů Foundry v agentech
Pomocí create_agent modelů připojených k Foundry můžete vytvářet smyčky agenta ve stylu ReAct:
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.
Lze použít také nástroje na straně serveru, ale vyžadují volání 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.",
)
Tip
Nástroj pro generování obrázků ve Foundry vyžaduje předání názvu nasazení modelu pro generování obrázku v rámci hlavičky. x-ms-oai-image-generation-deployment Při použití langchain-azure-aise zpracovává automaticky. Pokud ale plánujete tento nástroj používat s langchain-openai, je potřeba hlavičku předat ručně.
Použití modelů vkládání
Můžete snadno vytvořit instanci modelu pomocí init_embeddings.
from langchain.embeddings import init_embeddings
embed_model = init_embeddings("azure_ai:text-embedding-3-small")
Co tento fragment kódu dělá: Vytvoří klienta embeddingového modelu pomocí init_embeddings zjednodušené metody.
Všechny modely Foundry podporující rozhraní API kompatibilní s OpenAI je možné použít s klientem, musíte je ale nejprve nasadit do prostředku Foundry. Použití project_endpoint (proměnné prostředí FOUNDRY_PROJECT_ENDPOINT) vyžaduje Microsoft Entra ID pro ověřování a roli Foundry User.
Nebo vytvořte klienta pro vkládání pomocí AzureAIOpenAIApiEmbeddingsModelpříkazu .
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.embeddings import AzureAIOpenAIApiEmbeddingsModel
embed_model = AzureAIOpenAIApiEmbeddingsModel(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
model="text-embedding-3-large",
)
Pro přímé ověření koncového bodu a ověření klíče rozhraní API:
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",
)
Co tento fragment kódu dělá: Nastavuje generování embeddingů pro pracovní postupy vektorového vyhledávání, načítání a řazení.
Odkazy:
Příklad: Spuštění vyhledávání podobnosti s úložištěm vektorů
Pro místní experimentování použijte úložiště vektorů v paměti.
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'}]
Co tento fragment kódu dělá: Přidá ukázkové dokumenty do úložiště vektorů a vrátí nejpodobnější dokument dotazu.
Odkazy:
Ladění požadavků pomocí protokolování
Povolením langchain_azure_ai záznamů ladění můžete zkontrolovat tok požadavku.
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)
Co tento fragment kódu dělá: Nakonfiguruje protokolování Python pro generování podrobných protokolů sady SDK, které pomáhají řešit potíže s koncovým bodem nebo datovou částí.
Odkazy:
- protokolování Python
Referenční informace k proměnným prostředí
Můžete nakonfigurovat následující proměnné prostředí. Tyto hodnoty lze také nakonfigurovat při vytváření objektů:
| Proměnné | Roli | Příklad | Parametr v konstruktoru |
|---|---|---|---|
FOUNDRY_PROJECT_ENDPOINT |
Koncový bod projektu Foundry Použití koncového bodu projektu vyžaduje Microsoft Entra ID ověřování (doporučeno). | https://contoso.services.ai.azure.com/api/projects/my-project |
project_endpoint |
AZURE_OPENAI_ENDPOINT |
Základní zdroje pro OpenAI | https://contoso.openai.azure.com |
Žádný. |
OPENAI_BASE_URL |
Přímý koncový bod kompatibilní s OpenAI používaný pro volání modelu | https://contoso.services.ai.azure.com/openai/v1 |
endpoint |
OPENAI_API_KEY Nebo AZURE_OPENAI_API_KEY |
Klíč rozhraní API používaný pro ověřování založené na klíči pomocí OPENAI_BASE_URL nebo AZURE_OPENAI_ENDPOINT. |
<your-api-key> |
credential |
AZURE_OPENAI_DEPLOYMENT_NAME |
Název použití modelu ve službě Foundry nebo OpenAI. Zkontrolujte název na portálu Foundry, protože názvy nasazení se můžou lišit od použitého základního modelu. Můžete použít jakýkoli model podporující rozhraní API kompatibilní s OpenAI, ale nemusí být podporovány všechny parametry. | Mistral-Large-3 |
model |
AZURE_OPENAI_API_VERSION |
Verze rozhraní API, která se má použít. Pokud je api_version k dispozici, vytvoříme klienty OpenAI a vložíme parametr dotazu api-version prostřednictvím default_query. |
v1 Nebo preview |
api_version |
Důležité
Proměnné prostředí AZURE_AI_INFERENCE_ENDPOINT a AZURE_AI_CREDENTIALS použité pro AzureAIChatCompletionsModel nebo AzureAIEmbeddingsModel (v zastaralých systémech) se už nepoužívají.