Skip to main content

fugacio-copilot

Chemical-engineering design copilot/agent for the Fugacio stack. It sits on top of fugacio.sim and turns natural-language design goals into engineering calculations: flowsheets, equipment sizing, and (eventually) techno-economic / life-cycle analysis.

The bridge between a language model and the differentiable engine is a tool registry, deterministic, JSON-in/JSON-out functions exposed with the same function-calling schemas OpenAI/Anthropic expect:

  • Properties & equilibrium: list_components, component_properties, saturation_pressure, bubble_pressure, flash_drum. The flash, the heater, the columns, and the exchanger accept a method (pr, srk, nrtl, unifac, pcsaft, iapws, ...) that selects the property package.
  • Molecular PC-SAFT: saft_flash, saft_density, saft_saturation_pressure, saft_bubble_pressure, and saft_residual_enthalpy, the molecular EOS preferred for associating fluids (water, alcohols).
  • Unit operations: heat_exchanger (one-sided heater/cooler), two_sided_heat_exchanger (hot and cold streams, rigorous T-Q curves, one closing spec), compressor (and turbine), pump, valve, each closing a rigorous energy balance.
  • Distillation: shortcut_distillation (Fenske-Underwood-Gilliland), rigorous_distillation (simultaneous-correction MESH column with stage energy balances, profiles, and duties), and absorber.
  • Gradient-based optimization: optimize_flash_temperature differentiates straight through the equilibrium flash; optimize_column_reflux imposes the purity as a specification of the MESH column and reports the reflux it takes.

A model-agnostic agent loop (run_agent) drives plan→act→answer; the planner is injected, so the loop is fully testable with a scripted planner while a real LLM drops in behind the optional llm extra.

from fugacio.copilot import call_tool, run_agent, tool_schemas

# Call an engine-backed tool directly (JSON in / JSON out):
call_tool("saturation_pressure", {"component": "propane", "temperature": 300.0})

# Or drive the agent loop with your own planner (an LLM in production):
def planner(goal, tools, transcript):
    if not transcript:
        return {"tool": "flash_drum", "arguments": {
            "components": ["methane", "propane", "n-pentane"],
            "z": [0.5, 0.3, 0.2], "flow": 100.0,
            "temperature": 320.0, "pressure": 20e5,
        }}
    vf = transcript[-1]["result"]["vapor_fraction"]
    return {"final_answer": f"vapor fraction = {vf:.3f}"}

run_agent("Flash this feed", planner).answer  # 'vapor fraction = 0.747'

tool_schemas() returns the schemas to hand an LLM. LLM-backed planning lives behind the optional llm extra:

pip install "fugacio-copilot[llm]"

Part of the fugacio namespace; installs independently: pip install fugacio-copilot.

Metadata

Release files for fugacio-copilot 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fugacio-copilot 0.4.0
File Size Uploaded
fugacio_copilot-0.4.0.tar.gz 54.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fugacio-copilot 0.4.0
File Interpreter ABI Platform
fugacio_copilot-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 104.8 kB

Release files / fugacio_copilot-0.4.0.tar.gz

Download URL fugacio_copilot-0.4.0.tar.gz
Size 54.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e74adaf87d7d5e62aeadb1d2b5c4f1a1eabe61549e8993a5c56ad531e3c17abe
BLAKE2b-256 checksum
How to use checksums
dfabfaf397bb37160969b3c7ec58ae6e25353a8bab95af769a45cf1a44e38bfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / fugacio_copilot-0.4.0-py3-none-any.whl

Download URL fugacio_copilot-0.4.0-py3-none-any.whl
Size 49.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0cfc28b9b9ac5dcea873fdf8f95183bbb97358980f4f8fb9b7c8dd3d881eed82
BLAKE2b-256 checksum
How to use checksums
152f92c14477dd370017d32c7308c06b7ca290234a6f1dff7de88ad88a9eeb5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page