Metadata-Version: 2.5
Name: azure-functions-langgraph
Version: 0.13.0
Summary: LangGraph integration for Azure Functions Python v2 — deploy compiled graphs as HTTP endpoints
Project-URL: Homepage, https://yeongseon.dev/azure-functions-python/langgraph/
Project-URL: Documentation, https://yeongseon.dev/azure-functions-python/langgraph/
Project-URL: Repository, https://github.com/yeongseon/azure-functions-langgraph-python
Project-URL: Issues, https://github.com/yeongseon/azure-functions-langgraph-python/issues
Author-email: Yeongseon Choe <yeongseon.choe@gmail.com>
License: MIT
License-File: LICENSE
Keywords: ai-agent,azure,azure-functions,langchain,langgraph,llm,python,serverless
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: <3.15,>=3.11
Requires-Dist: azure-functions<2.0.0,>=1.21.0; python_version < '3.13'
Requires-Dist: azure-functions<3.0.0,>=1.21.0; python_version >= '3.13'
Requires-Dist: langgraph<2.0,>=1.0
Requires-Dist: pydantic<3.0,>=2.7.4
Provides-Extra: azure-blob
Requires-Dist: azure-storage-blob<13,>=12.0; extra == 'azure-blob'
Provides-Extra: azure-identity
Requires-Dist: azure-identity<2,>=1.16; extra == 'azure-identity'
Provides-Extra: azure-table
Requires-Dist: azure-data-tables<13,>=12.0; extra == 'azure-table'
Provides-Extra: cosmos
Requires-Dist: langgraph-checkpoint-cosmosdb<0.5,>=0.2.0; extra == 'cosmos'
Provides-Extra: dev
Requires-Dist: azure-functions-durable<2,>=1.2; extra == 'dev'
Requires-Dist: azurefunctions-extensions-http-fastapi<2,>=1.0; extra == 'dev'
Requires-Dist: bandit==1.9.4; extra == 'dev'
Requires-Dist: build; extra == 'dev'
Requires-Dist: coverage; extra == 'dev'
Requires-Dist: hatch; extra == 'dev'
Requires-Dist: langchain<2,>=1.0; extra == 'dev'
Requires-Dist: langgraph-checkpoint-conformance<0.1,>=0.0.2; extra == 'dev'
Requires-Dist: langgraph-checkpoint-sqlite<4,>=3.0; extra == 'dev'
Requires-Dist: langgraph-sdk<0.5,>=0.2.2; extra == 'dev'
Requires-Dist: mypy==2.4.1; extra == 'dev'
Requires-Dist: opentelemetry-api<2,>=1.20; extra == 'dev'
Requires-Dist: opentelemetry-sdk<2,>=1.20; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-asyncio<2,>=0.23; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: requests; extra == 'dev'
Requires-Dist: ruff==0.17.3; extra == 'dev'
Requires-Dist: types-requests; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material<10.0; extra == 'docs'
Requires-Dist: mkdocs<2.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]<2.0; extra == 'docs'
Provides-Extra: durable
Requires-Dist: azure-functions-durable<2,>=1.2; extra == 'durable'
Provides-Extra: openapi
Requires-Dist: azure-functions-openapi<1,>=0.30; extra == 'openapi'
Provides-Extra: otel
Requires-Dist: opentelemetry-api<2,>=1.20; extra == 'otel'
Provides-Extra: postgres
Requires-Dist: langgraph-checkpoint-postgres<4,>=3.0; extra == 'postgres'
Requires-Dist: psycopg[binary]<4,>=3.0; extra == 'postgres'
Provides-Extra: sqlite
Requires-Dist: langgraph-checkpoint-sqlite<4,>=3.0; extra == 'sqlite'
Provides-Extra: streaming
Requires-Dist: azurefunctions-extensions-http-fastapi<2,>=1.0; extra == 'streaming'
Description-Content-Type: text/markdown

# Azure Functions LangGraph

Deploy existing [LangGraph](https://github.com/langchain-ai/langgraph) graphs as
Azure Functions Python v2 HTTP endpoints without writing request wrappers.
This is a deployment adapter, not an agent builder or a replacement for LangGraph.

[![PyPI](https://img.shields.io/pypi/v/azure-functions-langgraph.svg)](https://pypi.org/project/azure-functions-langgraph/)
[![CI](https://github.com/yeongseon/azure-functions-langgraph-python/actions/workflows/ci-test.yml/badge.svg)](https://github.com/yeongseon/azure-functions-langgraph-python/actions/workflows/ci-test.yml)
[![Security](https://github.com/yeongseon/azure-functions-langgraph-python/actions/workflows/security.yml/badge.svg)](https://github.com/yeongseon/azure-functions-langgraph-python/actions/workflows/security.yml)
[![Docs](https://img.shields.io/badge/docs-yeongseon.dev-blue)](https://yeongseon.dev/azure-functions-python/langgraph/)

[한국어](README.ko.md) · [日本語](README.ja.md) · [简体中文](README.zh-CN.md)

## Installation

Python 3.11–3.14 is supported. Azure Functions hosting support depends on the
selected plan/runtime; see [deployment](docs/deployment.md).

```bash
pip install azure-functions-langgraph
```

## Quick Start

Save as `function_app.py` in a Functions app with `host.json`:

```python
from typing import TypedDict
from langgraph.graph import START, END, StateGraph
from azure_functions_langgraph import LangGraphApp
class State(TypedDict):
    message: str
builder = StateGraph(State)
builder.add_node("echo", lambda state: {"message": state["message"]})
builder.add_edge(START, "echo")
builder.add_edge("echo", END)
app = LangGraphApp()
app.register(builder.compile(), "echo")
func_app = app.function_app
```

Run `func start`, then POST `{"input":{"message":"hello"}}` to
`http://localhost:7071/api/graphs/echo/invoke`; the result is
`{"output":{"message":"hello"}}`. Deployed routes require a function key by
default. Follow the [5-minute tutorial](docs/tutorial-5-min.md) for complete
project files, local setup and deployment.

## Deploy to Azure (default path)

One path, start to finish: the [**5-minute tutorial**](docs/tutorial-5-min.md):
local invoke, minimal Azure resources, publish, authenticated cloud invoke, cleanup.
Stateless graphs need only the Storage Account Azure Functions itself requires.
Premium, Blob/Table persistence, Platform compatibility, Managed Identity and
distributed locks are **optional** next steps in the
[advanced deployment guide](docs/deployment.md). Cloud steps are not claimed
as certified beyond the stability table below.

## Stability — rolling 0.x, per surface

The package-level classifier is **Beta**, not a promise that every surface is
production-ready. Compatibility decisions follow [CONTRIBUTING.md](CONTRIBUTING.md#breaking-change-classification);
breaking changes remain on the 0.x line under the existing release policy.

| Surface | Tier | Contract |
| --- | --- | --- |
| `LangGraphApp` construction, native invoke/stream/state HTTP endpoints, auth levels | Stable | Preserve supported calls; incompatible changes require explicit classification and migration |
| Checkpoint backends, thread locks, async runtime, `version="v2"`, `RunObserver` | Beta | Shape settled; refinements remain possible before v1.0 |
| Platform compatibility, true HTTP streaming, Service Bus and Durable lifecycle | Experimental | Opt-in; may change between minor releases |

Classic stream routes return **buffered SSE**, not incremental tokens.
`StreamingLangGraphApp` is a separate experimental transport. Function keys
are not user/thread ownership; applications must enforce authorization.
Default locks and Platform thread records are process-local. Shared writers
need explicit distributed storage/locking; see the [production guide](docs/production-guide.md#distributed-deployment)
and [security boundaries](docs/security.md).

## Recommended learning path

Optional, after the [default path](docs/tutorial-5-min.md). These are independent,
capability-focused apps, not cumulative production templates or prerequisites:

1. [Azure OpenAI agent](examples/azure_openai_agent/)
2. [Conversation memory](examples/conversation_memory/)
3. [Tool calling](examples/tool_calling_agent/)
4. [Persistent production wiring](examples/production_persistent_agent/)

Also optional: [an official LangGraph guide graph hosted with minimal changes](examples/official_langgraph_basic/), an official-example adaptation (not one of the custom examples above).

Examples support deterministic fake models without cloud credentials. For
Platform thread storage, the tested [Managed Identity storage recipe](examples/managed_identity_storage/)
wires Azure Table explicitly. State separation is not authenticated ownership.

## Documentation

- [Configuration](docs/configuration.md) and [usage](docs/usage.md)
- [Adapter reference, optional features and migrations](docs/adapter-reference.md)
- [Architecture](docs/architecture.md) and [distributed deployment](docs/production-guide.md#distributed-deployment)
- [Finite SDK support matrix](COMPATIBILITY.md): partial compatibility, not Platform parity
- [Examples](examples/README.md), [troubleshooting](docs/troubleshooting.md), [security](SECURITY.md)
- [Contributing](CONTRIBUTING.md), [product scope](PRD.md), [design](DESIGN.md)
- AI tooling: [llms.txt](llms.txt), [llms-full.txt](llms-full.txt), [AGENTS.md](AGENTS.md)

## Contributing

Contributions are welcome. The [Contributing Guide](CONTRIBUTING.md) covers local setup, the checks to run, and the pull request workflow.

Looking for something to work on?

- [Good first issue](https://github.com/yeongseon/azure-functions-langgraph-python/labels/good%20first%20issue): small, self-contained starter tasks.
- [Help wanted](https://github.com/yeongseon/azure-functions-langgraph-python/labels/help%20wanted): tasks that may need more familiarity with this codebase or Azure Functions.

Please comment on an issue to request assignment before you open a pull request. Either list can be empty at any time, so bug reports and small documentation suggestions are always welcome too.

Part of the Azure Functions Python DX Toolkit. Integrated application recipes
live in the [cookbook](https://github.com/yeongseon/azure-functions-cookbook-python);
this package owns serving compiled graphs, not prompts, models or tool frameworks.

Independent community project; not affiliated with Microsoft or LangChain.
Azure, Azure Functions and LangGraph are their owners' trademarks. [MIT](LICENSE).
