Giter Club home page Giter Club logo

doppio_bot's Introduction

DoppioBot

doppio_bot_usage.mp4

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

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 <your-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

doppio_bot_cover_image

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

Features

DoppioBot Feature Sneak

  • 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

bot_fun_chat

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

doppio_bot's People

Contributors

nagariahussain avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.