Skip to main content

LangChain chat model provider for Apple's on-device Foundation Models framework

Project description

langchain-apple-foundation-models

PyPI

Use Apple's on-device Foundation Models as a drop-in LangChain chat model. Runs fully offline on macOS 26+ Apple Silicon -- no API key, no network call, no per-token cost.

demo

from langchain_apple_foundation_models import ChatAppleFoundationModels

llm = ChatAppleFoundationModels()
llm.invoke("What is the capital of France?")

Install

pip install langchain-apple-foundation-models

Requires macOS 26+ with Apple Intelligence enabled and Apple Silicon.

Why

Apple shipped a Python SDK for its on-device model this year (apple-foundation-models), but there was no LangChain provider for it -- meaning none of LangChain's chains, agents, or tool-calling abstractions could target Apple's on-device model. This closes that gap.

Features

  • Tool calling: pass LangChain @tool-decorated functions via .bind_tools([...]), same as any other LangChain chat model.
  • Structured output: .with_structured_output(schema) for JSON-schema or Pydantic-constrained generation.
  • Streaming: .stream(...) yields tokens as they're generated.
  • Zero network calls -- generation happens entirely on-device via Apple's Neural Engine.

Architecture

flowchart LR
    App["Your LangChain code<br/>chains / agents / tools"] -->|".invoke() .stream() .bind_tools()"| Provider["ChatAppleFoundationModels"]
    Provider --> SDK["apple-foundation-models<br/>(Python SDK)"]
    SDK --> FM["Foundation Models framework<br/>on-device, Apple Silicon, Neural Engine"]
    FM -.->|"no network call, ever"| SDK

ChatAppleFoundationModels implements LangChain's standard chat model interface, so it drops into any existing chain, agent, or tool-calling setup as a swap-in for a cloud provider -- the only difference is generation happens on-device.

Example: tool calling

from langchain_core.tools import tool
from langchain_apple_foundation_models import ChatAppleFoundationModels

@tool
def get_weather(city: str) -> str:
    """Get the current weather for a city."""
    return f"The weather in {city} is sunny and 72F."

llm = ChatAppleFoundationModels().bind_tools([get_weather])
llm.invoke("What's the weather in Austin?")

Known limitations

  • Multi-turn history is owned by the underlying Session, not LangChain's message list. Each ChatAppleFoundationModels instance lazily creates one on-device Session and reuses it across calls; if you pass a message list that diverges from what the session itself has tracked, the two can get out of sync. Fresh chains work naturally; manually-edited history does not yet.
  • Built on the apple-foundation-models unofficial Python bindings (alpha), which itself wraps Apple's Foundation Models framework -- both inherit Apple's current 4,096-token context window.
  • No support (yet) for Apple's newer multi-model / Private Cloud Compute routing announced at WWDC26 -- that requires an OS/SDK combination not yet stable enough to depend on. See the repo issues for status.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_apple_foundation_models-0.2.0.tar.gz (79.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file langchain_apple_foundation_models-0.2.0.tar.gz.

File metadata

File hashes

Hashes for langchain_apple_foundation_models-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f081c5222eda47653f85883ccdbad8fc768ba74278d9fca076f7e700f692b151
MD5 2ebd624360ea8c513c0c20a4540959ec
BLAKE2b-256 e2231a96b89156bcc5eec08e73047e0497a443fbdc02f0582fd12a94ea4f561e

See more details on using hashes here.

File details

Details for the file langchain_apple_foundation_models-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_apple_foundation_models-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a5a3283aa32863684164917af76a1a584f73dc36d68d43508927fd57c69d84c5
MD5 d4530df39ada3367d0545b03f3e5e753
BLAKE2b-256 d28396117b7725eb7e2b01db074ec46f21d27a07cf0084723c75fc0d35173104

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page