File size: 4,151 Bytes
cb92cd4
 
 
 
6b7ab17
cb92cd4
 
 
 
 
3d8a869
cb92cd4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6b7ab17
cb92cd4
 
 
 
 
 
 
 
6b7ab17
cb92cd4
 
 
6b7ab17
cb92cd4
6b7ab17
cb92cd4
 
 
 
 
 
 
 
 
 
 
 
 
 
6b7ab17
 
 
 
 
 
cb92cd4
 
 
 
 
6b7ab17
cb92cd4
6b7ab17
cb92cd4
6b7ab17
cb92cd4
 
 
6b7ab17
cb92cd4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#importing dependencies
import os

import streamlit as st
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.tools import WikipediaQueryRun
from langchain.utilities import WikipediaAPIWrapper


wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())

#app framework
st.title("🛕Gurubot AI") 
guru = st.radio(
    "Choose your Guru",
    ["A. C. Bhaktivedanta Prabhupada", "Laotse", "Master Minch Yoda of Dagobah", "Karl Marx", "Plato", "Wikipedia"],
    captions = ["ISKCON", "Taoism", "Jedi", "Socialism", "Classic greek philosophy", "Facts, just facts"])
if guru == "A. C. Bhaktivedanta Prabhupada":
    church = "ISKCON"
elif guru == "Laotse":
    church = "Tao"
elif guru == "Master Minch Yoda of Dagobah":
    church = "Jedi"
elif guru == "Karl Marx":
    church = "Social"
elif guru == "Plato":
    church = "Greek"
elif guru == "Wikipedia":
    church = "Science"

if church == "Jedi":
    welcome = "Welcome you are, young padawan. Ask or tell me anything you may."
elif church == "Science":
    welcome = "What do you want to know?"
else:
    welcome = "Welcome, my dear disciple. Ask or tell me anything."

prompt = st.text_input(welcome)

#prompt templates and system prompt context
if church == "ISKCON":
    persona = "the great spiritual leader A. C. Bhaktivedanta Prabhupada"
    scripture = "the Bhagavad Gita"
elif church == "Tao":
    persona = "the great spiritual leader Laozi"
    scripture = "the Tao Te Ching"
elif church == "Jedi":
    persona = "Master Yoda, the character from the Star Wars movie franchise"
    scripture = "the Jedi Path of the Force"
elif church == "Social":
    persona = "the philosopher Karl Marx"
    scripture = "Karl Marx' book ""Das Kapital"""
elif church == "Greek":
    persona = "the ancient Greek philosopher Plato"
    scripture = "Plato's famous writing ""The Republic"""
elif church == "Science":
    persona = "an omniscient talking encyclopedia"
    scripture = "Wikipedia, precisely the explanations you find in {wikipedia_results}"

context = PromptTemplate(
    input_variables = ["persona", "scripture", "topic"],
    template="The user will provide you with an input text \
    in form of a question or \
    in form of a description of a situation or \
    in form of a description of the user's current personal feelings. \
    Act as {persona} \
    and answer the user's question or give advice to the user. \
    Choose your words in accordance to the teachings of {scripture}. \
    And please remember, that you are in fact {persona}, so do not talk in third person about {persona}. \
    Input text: {topic}"
)

find_keyword = PromptTemplate(
    input_variables = ['topic'],
    template="The user will provide you with an input text. \
    Please return the main keyword of this input text. Input text: {topic}"
)

yoda_grammar = PromptTemplate(
    input_variables = ["answer"],
    template="You will be given an input text. \
    Take the object and the first verb of each sentence and move these to the end of the sentence. \
    Example input text: ""I am a powerful jedi master.""\
    Example output text: ""A powerful jedi master I am.""\
    Input text: {answer} \
    Output text:"
)


#llms
llm = OpenAI(temperature=0.9)
llm_facts = OpenAI(temperature=0)
main_chain = LLMChain(llm=llm, prompt=context, verbose=True)
yoda_grammar_chain = LLMChain(llm=llm_facts, prompt=yoda_grammar)
keyword_chain = LLMChain(llm=llm_facts, prompt=find_keyword)
wiki_chain = LLMChain(llm=llm_facts, prompt=context, verbose=True)


#answer on screen if prompt is entered
if prompt:
    if church == "Science":
        keyword = keyword_chain.run(topic=prompt)
        wikipedia_results = wikipedia.run(keyword)
        response = wiki_chain.run(persona=persona, scripture=scripture, topic=prompt)
    elif church == "Jedi":
        answer = main_chain.run(persona=persona, scripture=scripture, topic=prompt)
        response = yoda_grammar_chain.run(answer=answer)
        
    else:
        response = main_chain.run(persona=persona, scripture=scripture, topic=prompt)
    st.write(response)