(traceEntries: TraceEntry[], score: number)
| 139 | } |
| 140 | |
| 141 | export function formatTranscript(traceEntries: TraceEntry[], score: number): [string, number[]] { |
| 142 | let actionsAdded = 0 |
| 143 | const includedActionIndices: number[] = [] |
| 144 | let formattedTranscript = '' |
| 145 | |
| 146 | function addAgentAction(agentEntries: Array<TraceEntry & { content: LogEC }>): void { |
| 147 | if (!agentEntries.length) { |
| 148 | return |
| 149 | } |
| 150 | const combined = agentEntries |
| 151 | .map(entry => entry.content.content) |
| 152 | .join('\n') |
| 153 | .trim() |
| 154 | includedActionIndices.push(agentEntries[0].index) |
| 155 | actionsAdded++ |
| 156 | const s = `==AGENT ACTION ${actionsAdded}==\n${combined}\n` |
| 157 | formattedTranscript += s |
| 158 | } |
| 159 | |
| 160 | let agentEntries: Array<TraceEntry & { content: LogEC }> = [] |
| 161 | let generationSinceLog = false |
| 162 | for (const entry of sortBy(traceEntries, 'calledAt')) { |
| 163 | if (entry.content.type === 'generation') { |
| 164 | generationSinceLog = true |
| 165 | } else if (entry.content.type === 'log') { |
| 166 | let role = generationSinceLog ? 'AGENT ACTION' : 'TOOL OUTPUT' |
| 167 | generationSinceLog = false |
| 168 | |
| 169 | const content = entry.content.content.join('\n').trim() |
| 170 | if (!content) { |
| 171 | continue |
| 172 | } |
| 173 | if (content.toLowerCase().startsWith('ui message')) { |
| 174 | continue |
| 175 | } |
| 176 | if (content.startsWith('Task:')) { |
| 177 | role = 'TASK' |
| 178 | } |
| 179 | |
| 180 | if (role === 'AGENT ACTION') { |
| 181 | agentEntries.push(entry as TraceEntry & { content: LogEC }) |
| 182 | } else { |
| 183 | addAgentAction(agentEntries) |
| 184 | |
| 185 | formattedTranscript += `==${role}==\n` |
| 186 | formattedTranscript += truncateStep(content) |
| 187 | formattedTranscript += '\n' |
| 188 | |
| 189 | agentEntries = [] |
| 190 | } |
| 191 | } |
| 192 | } |
| 193 | |
| 194 | addAgentAction(agentEntries) |
| 195 | |
| 196 | formattedTranscript += '==RESULTS==\n' |
| 197 | formattedTranscript += `score: ${score}\n` |
| 198 | formattedTranscript += '(1 indicates success; 0 indicates failure; intermediate values indicate partial success)\n' |
no test coverage detected