MCPcopy
hub / github.com/InternLM/lmdeploy / chat

Method chat

lmdeploy/pipeline.py:181–242  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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:

Callers

nothing calls this directly

Calls 4

stream_inferMethod · 0.95
format_promptsMethod · 0.80
getMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected