Contents

onToolOutput(perform:)

Runs an action whenever a tool call output is received within this dynamic profile.

Declaration

func onToolOutput(perform action: nonisolated(nonsending) sending @escaping () async throws -> Void) -> some LanguageModelSession.DynamicProfile

Mentioned in

Discussion

When the onToolOutput closure throws an error, the caller’s respond or response will propagate that error.

Use this to track or log tool output within a dynamic profile:

struct MyDynamicProfile: LanguageModelSession.DynamicProfile {
  var body: some LanguageModelSession.DynamicProfile {
    Profile {
      Instructions("You are a helpful assistant.")
      SomeTool()
    }
    .onToolOutput {
      toolOutputCount += 1
    }
  }
}

See Also

Observing life cycle modifiers