|
67 | 67 | :content [{:type "tool_result" |
68 | 68 | :tool_use_id (:id content) |
69 | 69 | :content (llm-util/stringfy-tool-result content)}]} |
| 70 | + "reason" |
| 71 | + {:role "assistant" |
| 72 | + :content [{:type "thinking" |
| 73 | + :signature (:external-id content) |
| 74 | + :thinking (:text content)}]} |
70 | 75 | msg)) |
71 | 76 | past-messages)) |
72 | 77 |
|
|
111 | 116 | (swap! content-block* assoc (:index data) (:content_block data))) |
112 | 117 |
|
113 | 118 | nil) |
114 | | - "content_block_stop" (when-let [content-block (get @content-block* (:index data))] |
115 | | - (case (:type content-block) |
116 | | - "thinking" (on-reason {:status :finished |
117 | | - :id reason-id}) |
118 | | - nil) |
119 | | - (swap! content-block* dissoc (:index data))) |
120 | 119 | "content_block_delta" (case (-> data :delta :type) |
121 | 120 | "text_delta" (on-message-received {:type :text |
122 | 121 | :text (-> data :delta :text)}) |
|
135 | 134 | "thinking_delta" (on-reason {:status :thinking |
136 | 135 | :id reason-id |
137 | 136 | :text (-> data :delta :thinking)}) |
138 | | - (logger/warn "Unkown response delta type" (-> data :delta :type))) |
| 137 | + "signature_delta" (on-reason {:status :finished |
| 138 | + :external-id (-> data :delta :signature) |
| 139 | + :id reason-id}) |
| 140 | + nil) |
139 | 141 | "message_delta" (case (-> data :delta :stop_reason) |
140 | 142 | "tool_use" (doseq [content-block (vals @content-block*)] |
141 | 143 | (when (= "tool_use" (:type content-block)) |
|
154 | 156 | :content-block* (atom nil) |
155 | 157 | :on-error on-error |
156 | 158 | :on-response handle-response})))) |
157 | | - "end_turn" (on-message-received {:type :finish |
158 | | - :usage {:input-tokens (-> data :usage :input_tokens) |
159 | | - :output-tokens (-> data :usage :output_tokens)} |
160 | | - :finish-reason (-> data :delta :stop_reason)}) |
| 159 | + "end_turn" (do |
| 160 | + (reset! content-block* {}) |
| 161 | + (on-message-received {:type :finish |
| 162 | + :usage {:input-tokens (-> data :usage :input_tokens) |
| 163 | + :output-tokens (-> data :usage :output_tokens)} |
| 164 | + :finish-reason (-> data :delta :stop_reason)})) |
161 | 165 | "max_tokens" (on-message-received {:type :limit-reached |
162 | 166 | :tokens (:usage data)}) |
163 | 167 | nil) |
|
0 commit comments