Chat. Args: prompt: prompt string or a tuple of (prompt, image or [images]). session: the chat session. gen_config: an instance of GenerationConfig. Default to None. stream_response: whether to stream the response. adapter_name: ad
(self,
prompt: str | tuple[str, Image | list[Image]],
session=None,
gen_config: GenerationConfig | None = None,
stream_response=False,
adapter_name=None,
**kwargs)
| 179 | self.async_engine.close() |
| 180 | |
| 181 | def chat(self, |
| 182 | prompt: str | tuple[str, Image | list[Image]], |
| 183 | session=None, |
| 184 | gen_config: GenerationConfig | None = None, |
| 185 | stream_response=False, |
| 186 | adapter_name=None, |
| 187 | **kwargs) -> Session | Iterator: |
| 188 | """Chat. |
| 189 | |
| 190 | Args: |
| 191 | prompt: prompt string or a tuple of (prompt, image or [images]). |
| 192 | session: the chat session. |
| 193 | gen_config: an instance of GenerationConfig. Default to None. |
| 194 | stream_response: whether to stream the response. |
| 195 | adapter_name: adapter name. |
| 196 | **kwargs: additional keyword arguments. |
| 197 | |
| 198 | Returns: |
| 199 | Session | Iterator: the updated session, or a streaming iterator if stream_response is True. |
| 200 | """ |
| 201 | if session is None: |
| 202 | session = self.session_mgr.get() |
| 203 | session.update(prompt=prompt, response=None) |
| 204 | |
| 205 | prompt = MultimodalProcessor.format_prompts(prompt) |
| 206 | |
| 207 | sequence_start = session.step == 0 |
| 208 | generator = self.stream_infer(prompts=prompt, |
| 209 | sessions=session, |
| 210 | gen_config=gen_config, |
| 211 | stream_response=stream_response, |
| 212 | adapter_name=adapter_name, |
| 213 | multiplex=True, |
| 214 | sequence_start=sequence_start, |
| 215 | sequence_end=False, |
| 216 | step=session.step, |
| 217 | **kwargs) |
| 218 | |
| 219 | def _gen(): |
| 220 | resp = None |
| 221 | try: |
| 222 | for out in generator: |
| 223 | resp = resp.extend(out) if resp else out |
| 224 | yield out |
| 225 | except: # noqa |
| 226 | self._run(coro=session.async_abort()) |
| 227 | raise |
| 228 | else: |
| 229 | session.response = resp |
| 230 | session.step += resp.generate_token_len + resp.input_token_len |
| 231 | session.history.append((session.prompt, resp.text)) |
| 232 | |
| 233 | if stream_response: |
| 234 | return _gen() |
| 235 | else: |
| 236 | # run the generator until finish |
| 237 | with closing(_gen()) as gen: |
| 238 | for _ in gen: |
nothing calls this directly
no test coverage detected