Doppio Bot
AI ChatBot Template, built into Frappe's admin/desk Interface
- Author: NagariaHussain
- Repository: https://github.com/NagariaHussain/doppio_bot
- GitHub stars: 75
- Forks: 48
- License: MIT
- Category: Developer Tools
- Maintenance: Unmaintained
Install Doppio Bot
bench get-app https://github.com/NagariaHussain/doppio_bot
Tags
- chakra-ui
- frappe
- frappe-framework
- openai
- reactjs
- template
Add the Frappe Gems badge to your README
Maintain Doppio Bot? Paste this into your README:
[](https://frappegems.com/gems/apps/NagariaHussain/doppio_bot)
About Doppio Bot
DoppioBot
Use. Play. Extend. ChatGPT experience, built right into Frappe's desk interface.
Announcement Blog Post
You can read more on how DoppioBot is built, how to use it and how to extend it for your own applications in this blog post.
Tech Stack
- Frappe Framework
- Python & JavaScript
- MariaDB
- Redis
- LangChain
- OpenAI API
- ReactJS
- ChakraUI
Installation & Usage
Just like any other Frappe app, if you have bench installed, you can execute the following commands to install the DoppioBot app on your Frappe site:
bench get-app NagariaHussain/doppio_bot
bench --site install-app doppio_bot
Then add your OpenAI API key to the site_config.json (of the site you have installed the app on):
"openai_api_key": "sk-your-secret-api-key"
Then navigate to your site, use the awesome bar for Ask DoppioBot, and enjoy!
Chat Interface

The Chat page is built using Frappe's Custom Pages feature, React, and ChakraUI.
Features

- Session Chat history management with Redis
- Formatting of markdown responses including tables and lists
- Code block responses are syntax-highlighted and have a click to copy button!
- A sleek loading skeleton is shown while the message is being fetched
- The prompt can be submitted through mouse as well as keyboard (
Cmd + Enter)
API

The API that powers the chat page is built using the LangChain Python package.
Advanced Example: Agent with Custom Tool
Here is an example of an conversational agent that uses a custom tool that creates a ToDo document in the Frappe backend:
from langchain import OpenAI
from langchain.agents import tool
from langchain.agents import AgentType
from langchain.memory import ConversationBufferMemory
from langchain.agents import initialize_agent
llm = OpenAI(temperature=0)
memory = ConversationBufferMemory(memory_key="chat_history")
tools = [create_todo]
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
verbose=True,
memory=memory,
)
# Will call the tool with proper JSON and voila, magic!
agent.run("I have to create a college report before May 17, 2023, can you set a task for me?")
The tool that creates new ToDo documents in Frappe:
@tool
def create_todo(todo: str) -> str:
"""
Create a new ToDo document, can be used when you need to store a note or todo or task for the user.
It takes a json string as input and requires at least the `description`. Returns "done" if the
todo was created and "failed" if the creation failed. Optionally it could contain a `date`
field (in the JSON) which is the due date or reminder date for the task or todo. The `date` must follow
the "YYYY-MM-DD" format. You don't need to add timezone to the date.
"""
try:
data = frappe.parse_json(todo)
todo = frappe.new_doc("ToDo")
todo.update(data)
todo.save()
return "done"
except Exception:
return "failed"
Learn more about creating custom tools here.
License
MIT
Related Developer Tools apps for Frappe & ERPNext
- Frappe — Low code web framework for real world applications, in Python and Javascript
- Frappe Docker — Docker environment for developing, deploying, and running Frappe applications (ERPNext and custom apps) in production and development
- Builder — Craft beautiful websites effortlessly with an intuitive visual builder and publish them instantly
- Bench — CLI to manage Multi-tenant deployments for Frappe apps
- Frappe Ui — A set of components and utilities for rapid UI development
- Press — Full service cloud hosting for the Frappe stack - powers Frappe Cloud
- Gameplan — Open Source Discussions Platform for Remote Teams
- Doppio — A Frappe app (CLI) to magically setup single page applications and Vue/React powered desk pages on your custom Frappe apps.