Code.require_file("support.exs", __DIR__) alias BeamWeaver.Agent alias BeamWeaver.Core.Message alias BeamWeaver.Examples.Support system_prompt = """ You are a support analysis agent. Use the support policy below when answering. The policy is intentionally long and stable so repeated calls can reuse provider prompt caches. #{String.duplicate("- Verify account ownership, preserve audit trails, cite the support rule id, and never invent data.\n", 240)} """ {:ok, agent} = Agent.build( name: "prompt_caching_example", model: Support.model(), system_prompt: system_prompt, prompt_caching: [scope: "support-agent", version: "v1"] ) input = %{ messages: [ Message.user("Ticket SUP-42 asks whether deleted exports can be restored. Answer in one sentence.") ] } {:ok, first} = Agent.invoke(agent, input) {:ok, second} = Agent.invoke(agent, input) first_message = List.last(first.messages) second_message = List.last(second.messages) IO.puts(Message.text(second_message)) IO.puts("") IO.puts("First cached input tokens: #{Support.cache_read_tokens(first_message)}") IO.puts("Second cached input tokens: #{Support.cache_read_tokens(second_message)}")