Generate results given an input. Args: inputs (PromptType): A string or PromptDict. The PromptDict should be organized in OpenCompass' API format. max_out_len (int): The maximum length of the output. Returns: str:
(
self,
input: PromptType,
max_out_len: int = 512,
)
| 77 | return results |
| 78 | |
| 79 | def _generate( |
| 80 | self, |
| 81 | input: PromptType, |
| 82 | max_out_len: int = 512, |
| 83 | ) -> str: |
| 84 | """Generate results given an input. |
| 85 | |
| 86 | Args: |
| 87 | inputs (PromptType): A string or PromptDict. |
| 88 | The PromptDict should be organized in OpenCompass' |
| 89 | API format. |
| 90 | max_out_len (int): The maximum length of the output. |
| 91 | |
| 92 | Returns: |
| 93 | str: The generated string. |
| 94 | """ |
| 95 | assert isinstance(input, (str, PromptList)) |
| 96 | |
| 97 | if isinstance(input, str): |
| 98 | messages = [{'role': 'user', 'content': input}] |
| 99 | else: |
| 100 | messages = [] |
| 101 | msg_buffer, last_role = [], None |
| 102 | for item in input: |
| 103 | item['role'] = 'assistant' if item['role'] == 'BOT' else 'user' |
| 104 | if item['role'] != last_role and last_role is not None: |
| 105 | messages.append({ |
| 106 | 'content': '\n'.join(msg_buffer), |
| 107 | 'role': last_role |
| 108 | }) |
| 109 | msg_buffer = [] |
| 110 | msg_buffer.append(item['prompt']) |
| 111 | last_role = item['role'] |
| 112 | messages.append({ |
| 113 | 'content': '\n'.join(msg_buffer), |
| 114 | 'role': last_role |
| 115 | }) |
| 116 | |
| 117 | if self.system_prompt: |
| 118 | system = {'role': 'system', 'content': self.system_prompt} |
| 119 | messages.insert(0, system) |
| 120 | |
| 121 | data = {'model': self.model, 'messages': messages} |
| 122 | |
| 123 | max_num_retries = 0 |
| 124 | while max_num_retries < self.retry: |
| 125 | self.acquire() |
| 126 | try: |
| 127 | raw_response = requests.request('POST', |
| 128 | url=self.url, |
| 129 | headers=self.headers, |
| 130 | json=data) |
| 131 | except Exception as err: |
| 132 | print('Request Error:{}'.format(err)) |
| 133 | time.sleep(2) |
| 134 | continue |
| 135 | |
| 136 | try: |