| 'use client' | |
| import { useTranslation } from 'react-i18next' | |
| import type { FC } from 'react' | |
| import ToolCall from './tool-call' | |
| import cn from '@/utils/classnames' | |
| import type { AgentIteration } from '@/models/log' | |
| type Props = { | |
| isFinal: boolean | |
| index: number | |
| iterationInfo: AgentIteration | |
| } | |
| const Iteration: FC<Props> = ({ iterationInfo, isFinal, index }) => { | |
| const { t } = useTranslation() | |
| return ( | |
| <div className={cn('px-4 py-2')}> | |
| <div className='flex items-center'> | |
| {isFinal && ( | |
| <div className='shrink-0 mr-3 text-gray-500 text-xs leading-[18px] font-semibold'>{t('appLog.agentLogDetail.finalProcessing')}</div> | |
| )} | |
| {!isFinal && ( | |
| <div className='shrink-0 mr-3 text-gray-500 text-xs leading-[18px] font-semibold'>{`${t('appLog.agentLogDetail.iteration').toUpperCase()} ${index}`}</div> | |
| )} | |
| <div className='grow h-[1px] bg-gradient-to-r from-[#f3f4f6] to-gray-50'></div> | |
| </div> | |
| <ToolCall | |
| isLLM | |
| isFinal={isFinal} | |
| tokens={iterationInfo.tokens} | |
| observation={iterationInfo.tool_raw.outputs} | |
| finalAnswer={iterationInfo.thought} | |
| toolCall={{ | |
| status: 'success', | |
| tool_icon: null, | |
| }} | |
| /> | |
| {iterationInfo.tool_calls.map((toolCall, index) => ( | |
| <ToolCall | |
| isLLM={false} | |
| key={index} | |
| toolCall={toolCall} | |
| /> | |
| ))} | |
| </div> | |
| ) | |
| } | |
| export default Iteration | |