MCPcopy Create free account
hub / github.com/METR/vivaria / formatTranscript

Function formatTranscript

server/src/run_analysis.ts:141–201  ·  view source on GitHub ↗
(traceEntries: TraceEntry[], score: number)

Source from the content-addressed store, hash-verified

139}
140
141export 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'

Callers 2

summarizeFunction · 0.85

Calls 2

addAgentActionFunction · 0.85
truncateStepFunction · 0.85

Tested by

no test coverage detected