Add consequentialHint to ToolAnnotations#217
Conversation
|
@domfarolino Please review |
NoClueMike
left a comment
There was a problem hiding this comment.
When did "hints" deserve the time spent over actual communication. In the clients world, they can't even enable api"s for tools.
victorhuangwq
left a comment
There was a problem hiding this comment.
@beaufortfrancois thanks for adding this!
On a broader note, I'm starting to think if all ToolAnnotations should default to null instead of just false?
For example, I'm not sure if consequential not being set is the same as false.
|
Is |
|
If we don't like the idea of defaulting hints to But then we'd have three values to think about: The required/default boolean sidesteps this noise, so I like it more. I think it just matters how this will be used by models, but I think the binary makes more sense and models are unlikely to make use of all three values. |
073712c to
21a5a56
Compare
|
My original concern was that from an agent developer's perspective, it's an easy mistake to read consequentialHint = false as "this is safe," when it might just mean the web developer forgot to set it (or didn't know they should). A third "unset" state would mitigate that, though I take your point about the noise a special third value introduces. I agree that making it required sidesteps the "forgot to set" problem entirely. If we go that route, do we intend it to be required for all ToolAnnotations, or only a certain subset? (Btw I don't think this discussion should block the current PR) |
dc9963c to
2dcdd49
Compare
2dcdd49 to
e7bd697
Compare
|
|
||
| <h4 id="mitigation-consequential-annotation">Consequential Annotation for Tool Executions</h4> | ||
|
|
||
| **What:** Providing agents with a signal that a tool's execution results in significant, real-world, or non-reversible consequences. |
There was a problem hiding this comment.
There are more cases covered here than on line 670 where the dictionary fields are defined. These should align. Probably with this, more detailed, one.
There was a problem hiding this comment.
It's not clear to me what you suggest.
|
A ternary on the flag seems unwise. Particularly when undefined is falsy. Assigning the safe default would be better than making them required, and is probably better than the current unsafe default (untrustedContentHint = false and consequentialHint = false) . Particularly because the failure cases have pretty different visibility and severity, e.g. increased friction vs silently taking a consequential action. |
Fix #176
Preview | Diff