Skip to main content

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


Download files

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

Source Distribution

ape_langchain-1.0.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

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

ape_langchain-1.0.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

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

Hashes for ape_langchain-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f3ac8db9e9e120e7a471acf6cac843ca01af3dbceb57f3041b1da59b7545f984
MD5 82bf63a03f3ee2844e99882790a0e8d8
BLAKE2b-256 e21bddfc929103f77a8cb5024af5e0495fce862bc990e528b0c94aeda53b57cd

See more details on using hashes here.

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

Hashes for ape_langchain-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac97b1a3cc92cc1fd9b0f5d2ed9782aced41bf6f38cc183a62fe5ab0829a69b0
MD5 d24234eab33010fa5be89177492bf384
BLAKE2b-256 00fcfceb056fd63d9eeec5ccc062eddc0c5b837321fe1f8a3b716ec5029fff18

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