# Stream‑mode LangChain Agent ## What this project does This repository contains a minimal example that demonstrates how to replace the `invoke()` call of a LangChain agent with the streaming interface `stream()`. The output is printed token by token so that the user can see the agent “think” in real time. The script uses the BroJS LLM provider and a tiny mock tool called `get_price` to illustrate how tools are called while streaming. ## File structure ``` ├── main.py # Entry point – shows three example invocations ├── requirements.txt # Dependencies (no exact versions) └── README.md # This file ``` ## Installation ```bash pip install -r requirements.txt export JOURNAL_MCP_PAT=YOUR_BROJS_TOKEN # required for the LLM python main.py ``` ## Example output Running `python main.py` produces something like: ``` === Example 1 === --- Step 0 --- Paris is the capital of France. --- End --- === Example 2 === --- Step 0 --- The price of milk in Kazan is 89 rubles. --- End --- === Example 3 === --- Step 0 --- The price of bread in Kazan is 45 rubles. The price of coffee in Moscow is 120 rubles. --- End --- ``` ## How it works * The agent is created with `create_agent` and a single tool. * `agent.stream()` returns an iterator that yields tuples `(chunk_type, chunk_data)` where `chunk_type` can be `'messages'` or `'updates'`. * Tokens are printed as they arrive, and step changes are highlighted with a separator line. Feel free to extend the tool set or modify the prompt – the streaming logic remains unchanged.