ChatInterface streaming error with Langchain

Getting error string index out of range when trying to stream in ChatInterface with Langchain.
works without streaming:

def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
     result = chain.invoke({"question":contents})
     return result.content

error with streaming code:

async def callback(contents: str, user: str, instance: pn.chat.ChatInterface):
    result = chain.astream({"question":contents})
    message = ""
    async for chunk in result:
        if chunk.content is not None:
            message += chunk.content
            yield message

chat_interface = pn.chat.ChatInterface(
    callback=callback, callback_user="ChatGPT", avatar='smb',show_button_name=False, width=1280)

chain = RunnablePassthrough.assign(
    research_summary=full_research_chain | collapse_list_of_lists
) | prompt | ChatOpenAI(model="gpt-3.5-turbo-1106", streaming=True)

chat_interface.send(
    "Finance research assistant", user="System",respond=False)
chat_interface.servable()

Hi thanks for reporting!
Can you try setting callback_exception="verbose" to see the full traceback?

Thanks for the response !
Looks like it does not like the ‘:’ in the urls in markdown…

Traceback (most recent call last):
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/chat/feed.py", line 439, in _prepare_response
    await task
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/chat/feed.py", line 395, in _handle_callback
    response_message = await self._serialize_response(response)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/chat/feed.py", line 382, in _serialize_response
    response_message = self._upsert_message(token, response_message)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/chat/feed.py", line 345, in _upsert_message
    message.update(value, user=user, avatar=avatar)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/chat/message.py", line 631, in update
    self.param.update(**updates)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2282, in update
    restore = self_._update(*args, **kwargs)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2322, in _update
    self_._batch_call_watchers()
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2506, in _batch_call_watchers
    self_._execute_watcher(watcher, events)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2468, in _execute_watcher
    watcher.fn(*args, **kwargs)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/param.py", line 925, in update_pane
    self._replace_pane()
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/param.py", line 880, in _replace_pane
    self._update_inner(new_object)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 704, in _update_inner
    new_pane, internal = self._update_from_object(
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 680, in _update_from_object
    cls._recursive_update(old_object, object)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 644, in _recursive_update
    old.param.update(**new_params)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2282, in update
    restore = self_._update(*args, **kwargs)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2322, in _update
    self_._batch_call_watchers()
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2506, in _batch_call_watchers
    self_._execute_watcher(watcher, events)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/param/parameterized.py", line 2468, in _execute_watcher
    watcher.fn(*args, **kwargs)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 324, in _update_pane
    self._update_object(ref, doc, root, parent, comm)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 258, in _update_object
    self._update(ref, old_model)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 504, in _update
    model.update(**self._get_properties(model.document))
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/reactive.py", line 581, in _get_properties
    properties = self._process_param_change(params)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/markup.py", line 458, in _process_param_change
    return super()._process_param_change(params)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/base.py", line 519, in _process_param_change
    params.update(self._transform_object(params.pop('object')))
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/panel/pane/markup.py", line 452, in _transform_object
    ).render(obj)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/main.py", line 267, in render
    return self.renderer.render(self.parse(src, env), self.options, env)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/main.py", line 252, in parse
    self.core.process(state)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/parser_core.py", line 32, in process
    rule(state)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/rules_core/inline.py", line 10, in inline
    state.md.inline.parse(token.content, state.md, state.env, token.children)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/parser_inline.py", line 120, in parse
    self.tokenize(state)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/parser_inline.py", line 102, in tokenize
    ok = rule(state, False)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/rules_inline/link.py", line 53, in link
    href = state.md.normalizeLink(res.str)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/main.py", line 321, in normalizeLink
    return normalize_url.normalizeLink(url)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/markdown_it/common/normalize_url.py", line 22, in normalizeLink
    parsed = mdurl.parse(url, slashes_denote_host=True)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/mdurl/_parse.py", line 300, in url_parse
    u.parse(url, slashes_denote_host)
  File "/Users/sylvaint/mambaforge/envs/research_assistant/lib/python3.10/site-packages/mdurl/_parse.py", line 204, in parse
    if rest[host_end - 1] == ":":
IndexError: string index out of range

Hmm seems like it’s a bug in mdurl?

Yes, intermittent issue with markdown parsing for URLS depending on the streaming chunking.
Name: mdurl
Version: 0.1.2

putting in a try except in ./site-packages/mdurl/_parse.py line 204:

try:
    if rest[host_end - 1] == ":":
        host_end -= 1
except:
    pass

Fixes the issue.
Thank you for your help. Did not know about callback_exception=“verbose”