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]"
run_llm_agent drives a real model through the same registry with a
provider from fugacio.copilot.llm: AnthropicProvider (Claude Opus 5,
claude-opus-5, by default), OpenAIProvider (gpt-5-mini by default), or the
deterministic MockProvider for tests. The providers send a sampling
temperature only when you pass one and cap each reply at 16,000 tokens by
default. A failed tool call returns to the model as an error it can correct;
a refused reply, or one cut off at the token cap, ends the run with that
stop_reason rather than an answer. Engine tools raise on a failed or
out-of-domain solve, so the model never receives an unconverged number.
from fugacio.copilot import run_llm_agent
from fugacio.copilot.llm import AnthropicProvider
result = run_llm_agent("Flash this feed at 320 K and 20 bar.", AnthropicProvider())
result.answer, result.stop_reason
Part of the fugacio namespace; installs independently:
pip install fugacio-copilot.
Metadata
Release files for fugacio-copilot 0.10.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 | Provenance | Actions |
|---|---|---|---|---|
| fugacio_copilot-0.10.0.tar.gz | 76.1 kB | Without provenance | Details for fugacio_copilot-0.10.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fugacio_copilot-0.10.0-py3-none-any.whl | Python 3 | none | any | Details for fugacio_copilot-0.10.0-py3-none-any.whl |
Total release size: 141.9 kB
Release files / fugacio_copilot-0.10.0.tar.gz
| Download URL | fugacio_copilot-0.10.0.tar.gz |
|---|---|
| Size | 76.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d5ba7f367d9116ad65c1ae6ada29ffbac6c692c95f946deac0702ce0dd7854d
|
|
BLAKE2b-256 checksum How to use checksums |
ee4fe35e417f6596feacdefb5cec15936f617edfb3bd95bea52ae54496f4a1a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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.10.0-py3-none-any.whl
| Download URL | fugacio_copilot-0.10.0-py3-none-any.whl |
|---|---|
| Size | 65.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
94a299bf5b8dea78e9db53596df1e47d3ad03fe171f5c23dbe35d9d3466eb075
|
|
BLAKE2b-256 checksum How to use checksums |
f0d297326bfbdd67a4776f14bb904110528d7d5ffac71dc4a53d71155aae9cbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}
|
Security for fugacio-copilot 0.10.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.