Skip to content

OrbiterToad/davinci-chatbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ text-davinci-002 will be defunct after january 4th 2024

Replaced by davinci-002 (slightly worse... but still good)

This is a blogpost originaly posted to dev.to link to article

Creating a ChatBot with Open-AIs text-davinci-002

So I have been using GitHub copilot for a while now. GitHub Copilot is a Plugin for VSCode/JB IDEs/NVIM that provides you with intelligent code completion, suggestions and in my opinion the next big thing in Software Development in general.

I was always really interested in how the whole AI Suggestion works and how it could be used in my own projects.

copilot

While looking into it, I came across the Open-AI Playground, a playground for Open-AI's text-davinci-002 model.

Just for understanding sake:

  • code-davinci (Used in GH Copilot) -> generates code
  • text-davinci (What I am going to be using) -> generates text / whole sentences

What is Open-AI's text-davinci-002 API?

text-davinci-002 is a model that can be trained to generate text from a given input.

It also provides an API to interact with the model which is actually quite easy to use.

const { Configuration, OpenAIApi } = require("openai");

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

const response = await openai.createCompletion("text-davinci-002", {
  prompt: "Hey how are you?\n", // question for the ai goes here
  temperature: 0, // 0 means no randomness and usually the best result
  max_tokens: 100, 
  top_p: 1.0,
  frequency_penalty: 0.2,
  presence_penalty: 0.0,
  stop: ["\n"],
});

Little tip: I would recommend using text-davinci-002 instead of 003. Even thou answers are slightly simpler, there is no swearing-filter in 002 or anything else alike. 003 always backpedals when hearing a bad word and tries to moraly reprimand you.

Creating the ChatBot

So I decided to create a ChatBot that can be used to interact with the AI. Developing with GitHubs Copilot I already noticed, that Context is always very important and helps the AI to understand what kind of response he should give.

So first thing I do is configure the AI! How do you ask? WITH CLEAR TEXT!

function conversationContext(aiName, attributes) {
  return `\n
    The following is a conversation with an AI. The AI is ${attributes}.
    \n
    Human:Hello
    \n
    ${aiName}:Hi, I am an AI. Whats your question?
    \n`
}

Now we will feed this context to the AI, which, with more context, will give us a better response.

const promt = `${conversation}Human:${question}
    \n
    ${aiName}:`

Here we just want want the AI has to say, like:

Human: Hello, who are you?
AI:    ${responseFromTheAI}

The Final Bot

Wrapping that all up into a nice React Application and the Bot is ready to go! Below I have some examples.

image image

The Chatbot is hosted on Netlify and the source code is available on Github

Chatbot on Netlify

Have fun, and I hope will find it useful in maybe finding your next Project Idea!

Releases

No releases published

Packages

No packages published