|
import warnings |
|
import os |
|
from dotenv import load_dotenv, find_dotenv |
|
import json |
|
|
|
import openai |
|
from langchain.chat_models import ChatOpenAI |
|
from langchain.prompts.chat import ( |
|
ChatPromptTemplate, |
|
SystemMessagePromptTemplate, |
|
AIMessagePromptTemplate, |
|
HumanMessagePromptTemplate, |
|
) |
|
from langchain.schema import AIMessage, HumanMessage, SystemMessage |
|
|
|
warnings.filterwarnings('ignore') |
|
_ = load_dotenv(find_dotenv()) |
|
openai.api_key = os.getenv('OPENAI_API_KEY') |
|
|
|
def get_completion(prompt, model="gpt-3.5-turbo"): |
|
messages = [{"role": "user", "content": prompt}] |
|
response = openai.ChatCompletion.create( |
|
model=model, |
|
messages=messages, |
|
temperature=0, |
|
) |
|
return response.choices[0].message["content"] |
|
|
|
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0): |
|
response = openai.ChatCompletion.create( |
|
model=model, |
|
messages=messages, |
|
temperature=temperature, |
|
) |
|
|
|
return response.choices[0].message["content"] |
|
|
|
def collect_messages(_): |
|
prompt = inp.value_input |
|
inp.value = '' |
|
context.append({'role':'user', 'content':f"{prompt}"}) |
|
response = get_completion_from_messages(context) |
|
context.append({'role':'assistant', 'content':f"{response}"}) |
|
panels.append( |
|
pn.Row('User:', pn.pane.Markdown(prompt, width=600))) |
|
panels.append( |
|
pn.Row('Assistant:', pn.pane.Markdown(response, width=600, style={'background-color': '#F6F6F6'}))) |
|
|
|
return pn.Column(*panels) |
|
|
|
|
|
persona = "LLM_1" |
|
|
|
pn.extension('floatpanel') |
|
panels = [] |
|
|
|
context = [ {'role':'system', 'content': sys_prompt.get_prompt(persona)} ] |
|
|
|
inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…') |
|
button_conversation = pn.widgets.Button(name="Chat!") |
|
|
|
interactive_conversation = pn.bind(collect_messages, button_conversation) |
|
|
|
dashboard = pn.Column( |
|
inp, |
|
pn.Row(button_conversation), |
|
pn.panel(interactive_conversation, loading_indicator=True, height=300), |
|
) |
|
|
|
dashboard |