holoviz-topics / panel-chat-examples

Examples of Chat Bots using Panels chat features: Traditional, LLMs, AI Agents, LangChain, OpenAI etc
https://holoviz-topics.github.io/panel-chat-examples/
MIT License
109 stars 35 forks source link
chat gpt llama mistral openai panel python

Panel Chat Examples

build

Examples using Panel and its Chat Components; Panels chat components are multi modal and supports LangChain, OpenAI, Mistral, Llama, etc.

Documentation: holoviz-topics.github.io/panel-chat-examples/

https://github.com/holoviz-topics/panel-chat-examples/assets/42288570/cdb78a39-b98c-44e3-886e-29de6a079bde

Panels Chat Components are available with pip install "panel>=1.3.0"; most examples require pip install "panel>=1.4.0".

More unmaintained examples can be found in GitHub issues and HoloViz Discourse

Quick Start

It's super easy to get started with Panel chat components.

  1. Setup imports
  2. Define a function to dictate what to do with the input message
  3. Define a servable widget with callback=response_callback
# 1.)
import panel as pn
pn.extension()

# 2.)
def response_callback(input_message: str, input_user: str, instance: pn.chat.ChatInterface):
    # choose your favorite LLM API to respond to the input_message
    ...
    response_message = f"Echoing your input: {input_message}"
    return response_message

# 3.)
pn.widgets.ChatInterface(callback=response_callback).servable()

Exploration

Open in GitHub Codespaces

Installation

To install and serve all examples:

git clone https://github.com/holoviz-topics/panel-chat-examples
cd panel-chat-examples
pip install -e ".[all]"  # or instead of `all`, just `openai`, `mistralai`, `langchain`, `llamaindex`, `llamacpp`
# Optionally set the OPENAI_API_KEY environment variable
panel serve docs/examples/**/*.py --static-dirs thumbnails=docs/assets/thumbnails --autoreload

Then open http://localhost:5006 in your browser.

Panel Index Page

Contributing

We would ❤️ to collaborate with you. Check out the DEVELOPER GUIDE for to get started.

License

This project is licensed under the terms of the MIT license.