LangChain integration for APE (AI Programmatic Execution)
Project description
ape-langchain
LangChain integration for APE (AI Programmatic Execution).
What is ape-langchain?
ape-langchain provides seamless integration between APE's deterministic functions and LangChain's agent framework. Convert APE tasks into LangChain tools with automatic validation and type safety.
Why ape-langchain?
LangChain agents are powerful but need reliable tools:
- Tool parameters must be validated
- Type safety prevents runtime errors
- Deterministic execution ensures consistency
- Clear contracts between agent and tools
ape-langchain solves this by wrapping APE functions as LangChain tools:
LangChain Agent → APE Tool → Validation → Deterministic execution ✓
Installation
# Core package
pip install ape-langchain
# With LangChain
pip install ape-langchain[langchain]
# Development dependencies
pip install ape-langchain[dev]
Prerequisites:
- Python >= 3.11
- ape-lang >= 0.2.0
Quick Start
from langchain.llms import OpenAI
from ape_langchain import create_langchain_tool
# 1. Create Ape task file
# calculator.ape:
# task add:
# inputs: a: Integer, b: Integer
# outputs: sum: Integer
# constraints: deterministic
# steps: sum = a + b
# 2. Create LangChain tool
tool = create_langchain_tool("calculator.ape", "add")
# 3. Use with LangChain
from langchain.agents import initialize_agent, AgentType
llm = OpenAI(temperature=0)
agent = initialize_agent(
tools=[tool],
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 4. Run agent
result = agent.run("Add 5 and 3")
print(result) # "The sum of 5 and 3 is 8"
API Reference
Schema Conversion
ape_task_to_langchain_schema(task: ApeTask) -> dict
Converts APE task to LangChain tool schema.
from ape_langchain import ape_task_to_langchain_schema, ApeTask
task = ApeTask(
name="calculate_tax",
inputs={"amount": "float", "rate": "float"},
output="float",
description="Calculate tax amount"
)
schema = ape_task_to_langchain_schema(task)
Tool Creation
create_langchain_tool(ape_file, function_name) -> StructuredTool
Create a LangChain StructuredTool from an Ape file.
from ape_langchain import create_langchain_tool
tool = create_langchain_tool("math_ops.ape", "multiply")
# Use in agent
result = tool.run({"a": 4, "b": 7})
Tool Wrapper
ApeLangChainTool
Low-level wrapper for more control.
from ape_langchain import ApeLangChainTool
ape_tool = ApeLangChainTool.from_ape_file("calc.ape", "divide")
langchain_tool = ape_tool.as_structured_tool()
# Execute directly
result = ape_tool.execute(a=10, b=2)
Chain Creation
create_ape_chain(ape_file, llm) -> AgentExecutor
Create a complete LangChain agent with all functions from an Ape file.
from ape_langchain import create_ape_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
chain = create_ape_chain("calculator.ape", llm=llm)
result = chain.run("Calculate 15 * 8 and then add 42")
Features
- ✅ StructuredTool integration: Full LangChain tool support
- ✅ Automatic validation: Type and constraint checking
- ✅ Pydantic schemas: Generated from APE types
- ✅ Multi-tool agents: Load entire APE modules as tools
- ✅ Error handling: Clear error propagation
- ✅ Type mapping: APE types → Python types → Pydantic
Type Mapping
| Ape Type | Python Type | LangChain Schema |
|---|---|---|
| String | str | string |
| Integer | int | integer |
| Float | float | number |
| Boolean | bool | boolean |
| List | list | array |
| Dict | dict | object |
Advanced Usage
Multiple Tools
from ape_langchain import ApeLangChainTool
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
# Load multiple functions
add_tool = create_langchain_tool("calc.ape", "add")
multiply_tool = create_langchain_tool("calc.ape", "multiply")
divide_tool = create_langchain_tool("calc.ape", "divide")
# Create agent
llm = OpenAI(temperature=0)
agent = initialize_agent(
tools=[add_tool, multiply_tool, divide_tool],
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION
)
result = agent.run("Calculate (5 + 3) * 2 / 4")
Custom Descriptions
tool = create_langchain_tool(
"calc.ape",
"add",
description="Adds two numbers together with validation"
)
With Memory
from langchain.memory import ConversationBufferMemory
from langchain.agents import initialize_agent
memory = ConversationBufferMemory(memory_key="chat_history")
agent = initialize_agent(
tools=[tool],
llm=llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory
)
Examples
Basic Calculator Agent
# calculator.ape
task add:
inputs:
a: Integer
b: Integer
outputs:
result: Integer
constraints:
- deterministic
steps:
- result = a + b
task multiply:
inputs:
a: Integer
b: Integer
outputs:
result: Integer
constraints:
- deterministic
steps:
- result = a * b
# agent.py
from ape_langchain import create_ape_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
agent = create_ape_chain("calculator.ape", llm=llm)
agent.run("What is 7 times 8, then add 15?")
# Agent uses multiply(7, 8) → 56, then add(56, 15) → 71
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
# Type checking
mypy src/
License
MIT License - see LICENSE file for details.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ape_langchain-1.0.0.tar.gz.
File metadata
- Download URL: ape_langchain-1.0.0.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3ac8db9e9e120e7a471acf6cac843ca01af3dbceb57f3041b1da59b7545f984
|
|
| MD5 |
82bf63a03f3ee2844e99882790a0e8d8
|
|
| BLAKE2b-256 |
e21bddfc929103f77a8cb5024af5e0495fce862bc990e528b0c94aeda53b57cd
|
File details
Details for the file ape_langchain-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ape_langchain-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac97b1a3cc92cc1fd9b0f5d2ed9782aced41bf6f38cc183a62fe5ab0829a69b0
|
|
| MD5 |
d24234eab33010fa5be89177492bf384
|
|
| BLAKE2b-256 |
00fcfceb056fd63d9eeec5ccc062eddc0c5b837321fe1f8a3b716ec5029fff18
|