What specific response element must be checked to determine if tool use is required in a conversation?	The `stop_reason` returned in the response.
What structural change was made to the `chat` function's return value to support tool use logic?	It was changed to return a dictionary containing `parts`, `stop_reason`, and `text`.
How was the text extraction logic improved within the `chat` function?	It now scans all parts of the message and joins all text parts together, rather than assuming the first part is text.
What is the primary purpose of the new `run_conversation` function?	To handle multi-turn conversations that involve tool use.
What condition causes the `run_conversation` loop to break?	When the `stop_reason` is not equal to `tool use`.
When the `stop_reason` is `tool use`, what action does the `run_conversation` function take?	It calls `run_tools` with the tool request parts, and adds the result as a user message.
How are the tool use parts from the initial response added to the message history within `run_conversation`?	They are added as an assistant message.
What is the overall flow of the `run_conversation` loop when a tool is needed?	Call `chat` -> Add result to history -> Check stop reason -> If `tool use`, call `run_tools` -> Add tool result to history -> Repeat.
