| 544 | return f'text={self.text!r}\n{self._format_none_text_fields()}' |
| 545 | |
| 546 | def _format_none_text_fields(self): |
| 547 | fields = [] |
| 548 | fields.append(f'input_token_len={self.input_token_len}') |
| 549 | fields.append(f'generate_token_len={self.generate_token_len}') |
| 550 | fields.append(f'finish_reason="{self.finish_reason}"') |
| 551 | fields.append(f'token_ids={self.token_ids}') |
| 552 | fields.append(f'logprobs={self.logprobs}') |
| 553 | |
| 554 | # Helper function to format tensor information |
| 555 | def _format_tensor(name: str, tensor: torch.Tensor | None) -> list[str]: |
| 556 | if tensor is None: |
| 557 | return [f'{name}=None'] |
| 558 | try: |
| 559 | return [f'{name}.shape={tensor.shape}', f'{name}={tensor}'] |
| 560 | except: # noqa |
| 561 | # in case tensor is not torch.Tensor or has no shape |
| 562 | return [f'{name}={tensor}'] |
| 563 | |
| 564 | # Format tensor fields |
| 565 | fields.extend(_format_tensor('logits', self.logits)) |
| 566 | fields.extend(_format_tensor('last_hidden_state', self.last_hidden_state)) |
| 567 | fields.extend(_format_tensor('routed_experts', self.routed_experts)) |
| 568 | return '\n'.join(fields) |
| 569 | |
| 570 | def extend(self, other: 'Response') -> 'Response': |
| 571 | """Extend this response with another response. |