Goal: Implement the ReAct Thought → Action → Observation loop yourself as an explicit LangGraph graph — a model-call node and a tool node — running against a free-tier LLM, so you understand exactly what the "agent" abstraction is doing underneath. Then trace and compare that behavior against a ready-made LangChain ReAct agent supplement. Steps:
llama3.2 or qwen2.5) to run entirely offline with no API key. Either option is fully free.pip install langgraph langchain langchain-google-genai (for Gemini) or pip install langgraph langchain langchain-ollama (for Ollama).calculator(expression: str) tool and a search_notes(query: str) tool that looks up a small local dictionary or text file you provide — no paid search API needed).StateGraph with (a) a call_model node that sends the running message list to your chat model with tools bound, and (b) a call_tools node that executes any tool calls the model produced and appends the results as tool messages. Add a conditional edge from call_model: if the last message has tool calls, route to call_tools; otherwise, route to END. Add a normal edge from call_tools back to call_model, closing the loop. Use the LangGraph ReAct Agent Template as a structural reference, but write the graph yourself rather than importing the prebuilt agent.:free) model ID with 2–3 tools (calculator, search). Run the same or a similar multi-step prompt and observe how the prebuilt AgentExecutor/LangGraph prebuilt agent handles tool selection step-by-step.Deliverables: Submit your Python source file(s) (or a .ipynb), the captured trace output from Step 5 with your annotations from Step 6, and your written comparison from Step 8, either as an uploaded file or pasted directly into the text entry box.