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.8.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.8.0.tar.gz | 64.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fugacio_copilot-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 123.9 kB
Release files / fugacio_copilot-0.8.0.tar.gz
| Download URL | fugacio_copilot-0.8.0.tar.gz |
|---|---|
| Size | 64.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a6a1dd4343944bf195bba847ee68e6f79b5bf542f7a654d9356b13dad6d3caa6
|
|
BLAKE2b-256 checksum How to use checksums |
ff8183d1978634f2fe4ede9c68f5f565fce10f0760080650c2dcd43864bc6ced
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","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.8.0-py3-none-any.whl
| Download URL | fugacio_copilot-0.8.0-py3-none-any.whl |
|---|---|
| Size | 59.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5bf76c1c08e54ff22df514716b69024b88cac9c9a972da9a98c5c6219738f159
|
|
BLAKE2b-256 checksum How to use checksums |
e93df65570ddcccc0ae4e9fba496167764939a08012b8feb3a6431fbfc369782
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","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}
|