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 amethod(pr,srk,nrtl,unifac,pcsaft,iapws, ...) that selects the property package. - Molecular PC-SAFT:
saft_flash,saft_density,saft_saturation_pressure,saft_bubble_pressure, andsaft_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), andabsorber. - Gradient-based optimization:
optimize_flash_temperaturedifferentiates straight through the equilibrium flash;optimize_column_refluximposes 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.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fugacio_copilot-0.3.0.tar.gz | 53.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fugacio_copilot-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 103.3 kB
Release files / fugacio_copilot-0.3.0.tar.gz
| Download URL | fugacio_copilot-0.3.0.tar.gz |
|---|---|
| Size | 53.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a3e462a359be8cfe00573d2bd07ee4974d16539c5bed023b43747d3a5a4aa66
|
|
BLAKE2b-256 checksum How to use checksums |
c244e1d2e484d41fa8b4d479b4bf8a6daa874bfe994008a8cd814411777a8b57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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.3.0-py3-none-any.whl
| Download URL | fugacio_copilot-0.3.0-py3-none-any.whl |
|---|---|
| Size | 49.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f6455e9ca05a20c90552cea257f5a394e3dc2200ae1b7c0ea751031bed6e35c
|
|
BLAKE2b-256 checksum How to use checksums |
11473c2fe18cfcd83e842ddb91b5d1571a14b13c08645ee9fd7ab800f80f90b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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}
|