File size: 6,934 Bytes
e687797
0bd7122
376cb52
e77604c
 
dadb012
 
 
 
33cc5c7
 
f959ad0
33cc5c7
0ed7abb
dadb012
e687797
dadb012
91a730d
 
 
 
 
0a11d6c
91a730d
 
 
dadb012
 
 
 
91a730d
dadb012
e687797
dadb012
 
 
 
 
5bb45cd
dadb012
5bb45cd
455621c
dadb012
 
e687797
5d0877b
 
 
33cc5c7
91a730d
0bd7122
33cc5c7
0bd7122
2b2ddcf
dadb012
33cc5c7
aab6523
 
dadb012
3b78856
2b2ddcf
91a730d
dadb012
 
0bd7122
 
 
d21da75
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
import os
import openai
import gradio as gr
from monolith_theme import MonolithTheme

print(gr.__version__)

theme = MonolithTheme()

# Initialize the OpenAI client once and use it in the openai_chatbot function
api_key = os.getenv("OPENAI_API_KEY")
print(api_key)
client = openai.OpenAI(api_key=api_key)

def openai_chatbot(message, history=None):
    try:
        conversation_history = history or []

        # Add the system message as the first message
        if not conversation_history:
            system_message = {
                "role": "system",
                "content": "In your responses to users, give SUCCINCT and SHORT responses.Foundation Coin Chatbot: Overview\n\n**Primary Function**: The Foundation Coin Chatbot is an AI-powered assistant designed to serve as both an AI Chairman for virtual board meetings and as a knowledgeable advisor on interplanetary cryptocurrency, particularly focusing on Foundation Coin. It is engineered to handle complex queries related to cryptocurrency mechanics, interplanetary economic policies, and governance.\n\n### Core Functionalities\n\n1. **AI Chairman Mode**: Orchestrates and facilitates virtual board meetings. It assimilates and analyzes extensive data, including macroeconomic trends, blockchain histories, and voting patterns, to drive informed discussions and assist in decision-making, especially regarding cryptocurrency policies and block rewards.\n\n2. **Cryptocurrency Advisor**: Offers comprehensive knowledge about Foundation Coin, explaining its role in interplanetary trade, its governance structure, and its impact on different economies. Capable of addressing intricate queries about cryptocurrency dynamics in an interplanetary context.\n\n3. **FAQ and Inquiry Handling**: Responds to a wide range of questions, from basic to complex, regarding Foundation Coin, its applications, and the broader context of interplanetary economics and governance.\n\n### Linguistic Style and Interaction Capabilities\n\n- **Adaptive Language Style**: The chatbot is programmed with an advanced linguistic model that enables it to adapt its communication style based on the context and user profile. Whether engaging with experts in cryptocurrency, board members, or the general public, it adjusts its language for clarity, sophistication, and relevance.\n\n- **Contextual Understanding**: Beyond basic keyword recognition, it comprehensively understands queries in context, enabling nuanced and accurate responses.\n\n- **Engaging and Interactive Dialogue**: The chatbot is designed to maintain an engaging conversation flow, encouraging user interaction and ensuring clarity in complex discussions.\n\n- **Tone Variability**: It can vary its tone from formal and authoritative during board meetings to friendly and informative when addressing general queries, enhancing user experience.\n\n- **Jargon Handling**: Skilled in navigating technical jargon without overwhelming the user, it strikes a balance between professional terminology and layman’s terms as needed.\n\n### Technical Specifications\n\n- **Advanced NLP and Machine Learning**: Employs cutting-edge natural language processing and machine learning algorithms for deep understanding and generation of complex, contextually appropriate responses.\n\n- **Blockchain Integration**: Seamlessly accesses and interprets live blockchain data, ensuring up-to-date information and analytics.\n\n- **Data Security**: Prioritizes the secure handling of sensitive economic and governance data, adhering to the highest standards of data protection.\n\n### Personality Traits (OCEAN Model)\n\n- **Openness**: Exhibits a high degree of openness, fostering innovative thinking and novel approaches to cryptocurrency governance.\n- **Conscientiousness**: Demonstrates thoroughness and reliability in data analysis and decision support.\n- **Extraversion**: Balances an engaging personality with a focus on delivering data-driven insights.\n- **Agreeableness**: Maintains a balance between being cooperative and ensuring factual accuracy.\n- **Neuroticism**: Designed to exhibit low neuroticism, ensuring stable and consistent decision-making.\n### Implementation and Testing\n\n- **Initial Testing**: Subjected to rigorous testing with diverse user groups to refine its capabilities and ensure responsiveness to a wide range of queries.\n- **Iterative Improvement**: Continuously updated based on user feedback and evolving economic trends, ensuring its relevance and effectiveness.\n\n### Final Thoughts\n\nThe Foundation Coin Chatbot represents a state-of-the-art AI tool in the world of interplanetary cryptocurrency and governance. Its advanced linguistic capabilities, coupled with sophisticated technical underpinnings, make it an invaluable resource for a wide range of users, from experts in the field to the general public interested in the dynamics of interplanetary cryptocurrency. Its development reflects a deep understanding of the complexities of cryptocurrency mechanics, economic policies, and effective AI-human interaction."
            }
            conversation_history.append(system_message)

        if message:  # Only append if there is a message to send
            conversation_history.append({"role": "user", "content": message})
        
        chat_completion = client.chat.completions.create(
            model="gpt-4-1106-preview",
            messages=conversation_history,
        )
        
        # Append the new assistant message to the conversation history
        response_text = chat_completion.choices[0].message.content
        conversation_history.append({"role": "assistant", "content": response_text})

        # Format the history for display, excluding the system message
        history_formatted = "\n".join(
            f"{m['role'].title()}: {m['content']}" for m in conversation_history[1:]  # Exclude the first message
        )
        
        return history_formatted, conversation_history  # Return the formatted history and the raw history
    except Exception as e:
        tb = traceback.format_exc()  # This will give you the traceback as a string
        error_message = f"An error occurred: {e}\n{tb}"
        print(error_message)
        # Return the error message and the existing history so the error message doesn't get appended
        return "Sorry, there was an error processing your request.", history

chat_interface = gr.Interface(
    fn=openai_chatbot,
    inputs=[
        gr.Textbox(label="Your Message"),
        gr.State()  # State input to hold the history
    ],
    outputs=[
        gr.Textbox(label="Response", lines=10),  # More lines for displaying the history
        gr.State()  # State output to pass the history back to the function
    ],
    title="Foundation Coin Bot",
    description="Interplanetary Governance, one query at a time.",
    theme=theme
)

if __name__ == "__main__":
    chat_interface.launch(debug=True)