I installed the package, set and exported the OPENAI API key and copy pasted the simple_chatbot example
https://raw.githubusercontent.com/shroominic/fastui-chat/main/examples/simple_chatbot.py
Then, I tried to run it, to no avail.
The server is started and I can type a question in the UI, but it keeps giving me this error in a loop (until I hit the ctrl-c key)
$ pip install fastui-chat
...
$ export OPENAI_API_KEY=xxxxxxx
$ python simple_chatbot.py
INFO: Started server process [37535]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:59603 - "GET /api/chat/generate/response?user_msg=what%27s%20the%20capital%20of%20France? HTTP/1.1" 200 OK
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/fastapi/applications.py", line 1106, in __call__
await super().__call__(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
raise exc
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
raise exc
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
raise e
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
await self.app(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
await self.app(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/routing.py", line 69, in app
await response(scope, receive, send)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/responses.py", line 270, in __call__
async with anyio.create_task_group() as task_group:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 597, in __aexit__
raise exceptions[0]
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/responses.py", line 273, in wrap
await func()
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/starlette/responses.py", line 262, in stream_response
async for chunk in self.body_iterator:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/fastui_chat/chat.py", line 84, in ai_response_generator
async for chunk in session.astream(user_msg):
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/fastui_chat/session.py", line 20, in astream
async for message in self.chat_handler.astream(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2109, in astream
async for chunk in self.atransform(input_aiter(), config, **kwargs):
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2092, in atransform
async for chunk in self._atransform_stream_with_config(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 1266, in _atransform_stream_with_config
async for chunk in iterator:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2062, in _atransform
async for output in final_pipeline:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 3515, in atransform
async for item in self.bound.atransform(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 3515, in atransform
async for item in self.bound.atransform(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2092, in atransform
async for chunk in self._atransform_stream_with_config(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 1266, in _atransform_stream_with_config
async for chunk in iterator:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2062, in _atransform
async for output in final_pipeline:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 3515, in atransform
async for item in self.bound.atransform(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2092, in atransform
async for chunk in self._atransform_stream_with_config(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 1266, in _atransform_stream_with_config
async for chunk in iterator:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 2062, in _atransform
async for output in final_pipeline:
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 3092, in atransform
async for output in self._atransform_stream_with_config(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 1245, in _atransform_stream_with_config
final_input: Optional[Input] = await py_anext(input_for_tracing, None)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/utils/aiter.py", line 62, in anext_impl
return await __anext__(iterator)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/utils/aiter.py", line 97, in tee_peer
97 def __init__(self, variable_name: str, *, optional: bool = False, **kwargs: Any):
item = await iterator.__anext__()
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 791, in atransform
async for output in self.astream(final, config, **kwargs):
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 572, in astream
yield await self.ainvoke(input, config, **kwargs)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 476, in ainvoke
return await asyncio.get_running_loop().run_in_executor(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/prompts/base.py", line 93, in invoke
return self._call_with_config(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/base.py", line 955, in _call_with_config
output = call_func_with_variable_args(
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/runnables/config.py", line 309, in call_func_with_variable_args
return func(input, **kwargs) # type: ignore[call-arg]
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/prompts/base.py", line 88, in _format_prompt_with_error_handling
return self.format_prompt(**inner_input)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/prompts/chat.py", line 365, in format_prompt
messages = self.format_messages(**kwargs)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/prompts/chat.py", line 614, in format_messages
message = message_template.format_messages(**kwargs)
File "/Users/juanan/.pyenv/versions/3.10.8/lib/python3.10/site-packages/langchain_core/prompts/chat.py", line 123, in format_messages
raise ValueError(
ValueError: variable history should be a list of base messages, got [AIMessage(content='How can I help you today?')]