examples/langchain_integration.py
| 1 | """Integrate wallet with a LangChain-style secret provider. |
| 2 | |
| 3 | Run: python examples/langchain_integration.py |
| 4 | """ |
| 5 | |
| 6 | from __future__ import annotations |
| 7 | |
| 8 | import tempfile |
| 9 | |
| 10 | from quantumshield import AgentIdentity |
| 11 | |
| 12 | from pqc_agent_wallet import Wallet |
| 13 | from pqc_agent_wallet.integrations import ( |
| 14 | make_langchain_secret_provider, |
| 15 | walletize_env, |
| 16 | ) |
| 17 | |
| 18 | |
| 19 | def main() -> None: |
| 20 | owner = AgentIdentity.create("langchain-agent") |
| 21 | with tempfile.NamedTemporaryFile(suffix=".wallet", delete=False) as tmp: |
| 22 | path = tmp.name |
| 23 | |
| 24 | w = Wallet.create_with_passphrase(path, "secret-phrase", owner) |
| 25 | w.put("openai_api_key", "sk-langchain-demo", service="openai") |
| 26 | w.put("serpapi_api_key", "sa-langchain-demo", service="serpapi") |
| 27 | |
| 28 | # Method 1: callable provider |
| 29 | provider = make_langchain_secret_provider(w) |
| 30 | print("[OK] openai via provider:", provider("openai_api_key")) |
| 31 | |
| 32 | # Method 2: bulk env mapping |
| 33 | env_cfg = walletize_env( |
| 34 | w, |
| 35 | { |
| 36 | "OPENAI_API_KEY": "openai_api_key", |
| 37 | "SERPAPI_API_KEY": "serpapi_api_key", |
| 38 | }, |
| 39 | ) |
| 40 | for k, v in env_cfg.items(): |
| 41 | print(f"[OK] {k} = {v}") |
| 42 | |
| 43 | |
| 44 | if __name__ == "__main__": |
| 45 | main() |
| 46 | |