A LangChain használata modellekkel az Microsoft Foundryben

A langchain-azure-ai használatával olyan LangChain-alkalmazásokat hozhat létre, amelyek Microsoft Foundryben üzembe helyezett modelleket hívnak meg. Az OpenAI-kompatibilis API-kkal rendelkező modellek közvetlenül használhatók. Ebben a cikkben csevegő- és beágyazási klienseket hoz létre, utasításláncokat futtat, és a generálást ellenőrzési munkafolyamatokkal kombinálja.

Előfeltételek

  • Egy Azure előfizetés. Hozzon létre egyet ingyen.

  • Egy Foundry-projekt.

  • A Foundry User szerepkör a Foundry projektben.

    Fontos

    Az Foundry RBAC-szerepköröket nemrég átnevezték. Foundry user, Foundry Owner, Foundry-fióktulajdonos és Foundry Project Manager korábban Azure AI-felhasználónak, Azure AI-tulajdonosnak, Azure AI-fióktulajdonosnak és Azure AI-Project-kezelőnek hívták. Előfordulhat, hogy egyes helyeken továbbra is a korábbi elnevezések jelennek meg, amíg az átnevezés fokozatosan bevezetésre kerül. A szerepkör-azonosítók és az alapvető jogosultságok az átnevezés ellenére változatlanok maradnak.

  • Telepített csevegőmodell, amely támogatja az OpenAI-kompatibilis API-kat, például gpt-4.1 vagy Mistral-Large-3.

  • Egy üzembe helyezett beágyazási modell, például text-embedding-3-large.

  • Python 3.10 vagy újabb verzió.

Telepítse a szükséges csomagokat:

pip install -U langchain langchain-azure-ai azure-identity

Fontos

langchain-azure-ai az új Microsoft Foundry SDK-t (v2) használja. Ha a Foundry classic verzióját használja, használja a langchain-azure-ai[v1]-t, amely az Azure AI Inference SDK-t (kivezetett) használja. További információ.

A környezet konfigurálása

A következő kapcsolati minták egyikének beállítása:

  • Microsoft Entra ID (ajánlott) projekt végpont
  • Közvetlen végpont API-kulccsal.
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>"

A kódrészlet leírása: Meghatározza a modellosztályok által a langchain-azure-ai projektalapú vagy közvetlen végpont-hozzáféréshez használt környezeti változókat.

Csevegési modellek használata

A modell egyszerű példányosításához használhatja a init_chat_model-t.

from langchain.chat_models import init_chat_model

model = init_chat_model("azure_ai:gpt-4.1")

Fontos

A használatához init_chat_model szükséges langchain>=1.2.13. Ha nem tudja frissíteni a szoftver verzióját, konfigurálja közvetlenül az ügyfélprogramokat.

Az OpenAI-kompatibilis API-kat támogató Összes Foundry-modell használható az ügyféllel, de először telepítenie kell őket a Foundry-erőforrásban. A(z) project_endpoint használatához (a(z) FOUNDRY_PROJECT_ENDPOINT környezeti változóval) Microsoft Entra ID-alapú hitelesítésre és a Foundry User szerepkörre van szükség.

A kódrészlet leírása: A kényelmi módszer használatával létrehoz egy csevegőmodell-ügyfelet init_chat_model . Az ügyfél a megadott modellhez a Foundry projektvégponton, vagy a környezetben konfigurált közvetlen végponton keresztül irányít.

Hivatkozások:

A beállítás ellenőrzése

Futtasson egy egyszerű modellhívást:

response = model.invoke("Say hello")
response.pretty_print()
================================== Ai Message ==================================
Hello! 👋 How can I help you today?

A kódrészlet leírása: Egy alapszintű kérést küld a végpont, a hitelesítés és a modell útválasztásának ellenőrzéséhez.

Hivatkozások:

Konfigurálható modellek

Futásidejű konfigurálható modellt is létrehozhat a beállítás megadásával configurable_fields. Ha kihagyja a model paramétert, az alapértelmezés szerint konfigurálható mezővé válik.

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?

A kódrészlet leírása: Létrehoz egy konfigurálható modellpéldányt, amely lehetővé teszi a modellek egyszerű váltását a meghívási időpontban. Mivel a model paraméter hiányzik init_chat_model, ezért alapértelmezés szerint konfigurálható mező, és továbbítható invoke()-vel. További mezőket is hozzáadhat, amelyek konfigurálhatók az configurable_fields konfigurálásával.

Kliens közvetlen konfigurálása

Az AzureAIOpenAIApiChatModel osztályt használva csevegőmodell-ügyfelet is létrehozhat.

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",
)

Alapértelmezés szerint AzureAIOpenAIApiChatModel az OpenAI Responses API-t használja. A viselkedést azzal módosíthatja, hogy megadja a use_responses_api=False értéket.

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
)

Aszinkron hívások futtatása

Aszinkron hitelesítő adatokat használjon, ha az alkalmazás modelleket hív meg ainvoke. Ha Microsoft Entra ID használ hitelesítéshez, használja a megfelelő aszinkron implementációt a hitelesítő adatokhoz:

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())

Tipp

Ha egy Jupyter-jegyzetfüzetben futtatja ezt a kódot, közvetlenül ahelyett használhatja await main()asyncio.run(main()).

================================== Ai Message ==================================
Hello! 👋 How can I help you today?

A kódrészlet leírása: Létrehoz egy aszinkron ügyfelet, és futtat egy nem blokkoló kérést a ainvoke.

Hivatkozások:

Érvelés

Számos modell többlépéses érvelést is végrehajthat, hogy következtetést vonjon le. Ez magában foglalja az összetett problémák kisebb, kezelhetőbb lépésekre való lebontását.

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 ...

Hivatkozások:

Kiszolgálóoldali eszközök

Az Foundryben üzembe helyezett OpenAI-modellek támogatják a kiszolgálóoldali eszközhívó ciklusokat: a modellek használhatják a webkeresést, a kódértelmezőket és más eszközöket, majd egyetlen beszélgetési formában elemezhetik az eredményeket. Ha egy modell eszközkiszolgálói oldalt hív meg, a válaszüzenet tartalma tartalmazni fogja az eszköz meghívását és eredményét képviselő tartalmat.

Fontos

A névtérben langchain_azure_ai.tools.builtin lévő eszközök csak OpenAI-modellekben támogatottak.

Ezek az OpenAI által biztosított eszközök, amelyek kibővítik a modell képességeit. A támogatott eszközök teljes listájának megtekintéséhez tekintse meg a beépített eszközöket.

Az alábbi példa a webes keresés használatát mutatja be:

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))

Előfordulhat, hogy egyes eszközök más erőforrások konfigurálását igénylik a projektben. Használja a azure-ai-projects utasítást ezen erőforrások konfigurálásához, majd hivatkozzon rájuk a LangChain/LangGraph rendszerekben.

Az alábbi példa bemutatja, hogyan konfigurálhat egy fájltárolót, mielőtt az eszközben használva lenne:

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,
    )

A kódrészlet mit tesz: Beállít egy vektortárolót egy fájllal a Microsoft Foundryben, hogy a modell később át tudja keresni a fájl tartalmát (a következő kódblokkban a FileSearchTool).

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 modellek használata ügynökökben

A create_agent Foundryhez csatlakoztatott modellekkel reAct-stílusú ügynökhurkokat hozhat létre:

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.

Kiszolgálóoldali eszközök is használhatók, de hívásra bind_toolsvan szükségük.

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.", 
)

Tipp

A Foundry képgenerálási eszközéhez a modell telepítési nevének átadása szükséges a képgeneráláshoz egy fejléc részeként. x-ms-oai-image-generation-deployment A langchain-azure-ai használata során ez automatikusan van kezelve. Ha azonban szeretné ezt az eszközt langchain-openai használni, manuálisan kell átadnia a fejlécet.

Beágyazási modellek használata

A modell egyszerű példányosításához használhatja a init_embeddings-t.

from langchain.embeddings import init_embeddings
from azure.identity import DefaultAzureCredential

embed_model = init_embeddings(
    "azure_ai:text-embedding-3-small",
    credential=DefaultAzureCredential(),
)

A kódrészlet leírása: Létrehoz egy beágyazási modellügyfélt a kényelmi init_embeddings módszer használatával. A init_chat_model-tól eltérően a(z) init_embeddings nem használja automatikusan tartalékként a(z) DefaultAzureCredential elemet, ezért explicit módon adja meg a hitelesítő adatot.

Az OpenAI-kompatibilis API-kat támogató Összes Foundry-modell használható az ügyféllel, de először telepítenie kell őket a Foundry-erőforrásban. A(z) project_endpoint használatához (a(z) FOUNDRY_PROJECT_ENDPOINT környezeti változóval) Microsoft Entra ID-alapú hitelesítésre és a Foundry User szerepkörre van szükség.

Vagy hozza létre a beágyazási klienst a következővel AzureAIOpenAIApiEmbeddingsModel.

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",
)

Közvetlen végpont- és API-kulcshitelesítés esetén:

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",
)

A kódrészlet leírása: Konfigurálja a beágyazásokat vektorkeresési, lekérési és rangsorolási munkafolyamatokhoz.

Hivatkozások:

Példa: Hasonlósági keresés futtatása vektortárolóval

Helyi kísérletezéshez használjon memórián belüli vektortárolót.

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'}]

A kódrészlet leírása: Mintadokumentumokat ad hozzá egy vektortárolóhoz, és a lekérdezéshez leginkább hasonló dokumentumot adja vissza.

Hivatkozások:

Kérelmek hibakeresése naplózással

Engedélyezze langchain_azure_ai a hibakeresési naplózást a kérelmek folyamatának vizsgálatához.

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)

A kódrészlet leírása: Konfigurálja a Python naplózást, hogy részletes SDK-naplókat bocsátson ki, amelyek segítenek a végpontokkal vagy hasznos adatokkal kapcsolatos problémák elhárításában.

Hivatkozások:

Környezeti változók referenciája

A következő környezeti változókat konfigurálhatja. Ezek az értékek az objektumok létrehozásakor is konfigurálhatók:

Változó Szerepet Példa Paraméter a konstruktorban
FOUNDRY_PROJECT_ENDPOINT Foundry projekt végpont. A projektvégpont használatához Microsoft Entra ID hitelesítés szükséges (ajánlott). https://contoso.services.ai.azure.com/api/projects/my-project project_endpoint
AZURE_OPENAI_ENDPOINT OpenAI-erőforrások gyökere. https://contoso.openai.azure.com Nincs.
OPENAI_BASE_URL A modellhívásokhoz használt közvetlen OpenAI-kompatibilis végpont. https://contoso.services.ai.azure.com/openai/v1 endpoint
OPENAI_API_KEY Vagy AZURE_OPENAI_API_KEY A OPENAI_BASE_URL vagy AZURE_OPENAI_ENDPOINT kulcsalapú hitelesítéshez használt API-kulcs. <your-api-key> credential
AZURE_OPENAI_DEPLOYMENT_NAME A modell üzembehelyezési neve az Foundry vagy az OpenAI erőforrásban. Ellenőrizze a nevet a Foundry portálon, mert a telepítési nevek eltérhetnek a használt modelltől. Az OpenAI-kompatibilis API-kat támogató modelleket lehet használni, azonban előfordulhat, hogy nem támogatnak minden paramétert. Mistral-Large-3 model
AZURE_OPENAI_API_VERSION A használni kívánt API-verzió. Ha rendelkezésre áll egy api_version, létrehozzuk az OpenAI-ügyfeleket, és a api-version lekérdezési paramétert a default_query-on keresztül szúrjuk be. v1 Vagy preview api_version

Fontos

A AZURE_AI_INFERENCE_ENDPOINT vagy AZURE_AI_CREDENTIALS (örökölt) célokra használt környezeti változók, mint például AzureAIChatCompletionsModel és AzureAIEmbeddingsModel, már nincsenek használatban.

Következő lépés