File size: 2,036 Bytes
39db067
 
 
 
 
 
 
 
 
 
 
 
aed0d9b
39db067
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from langchain_core.prompts import ChatPromptTemplate
from langchain_groq import ChatGroq
from dotenv import load_dotenv
from langchain.chains import ConversationChain
from langchain.memory import  ConversationBufferWindowMemory
from langchain_core.prompts.prompt import PromptTemplate
import streamlit as st
import os

load_dotenv()

# setting up groq api key
os.environ["GROQ_API_KEY"] = os.getenv('groq_api_key')

# chat set up
class DataScienceConsultant:
    def __init__(self, temperature=0.5, model_name="llama3-8b-8192"):
        self.chat = ChatGroq(temperature=temperature, model_name=model_name)
        self.template = """You are a Data Science Consultant. You have over 20 years of experience in the field. 
        You are currently working with a client to create synthetic data for their product. 
        You don't know anything about the product yet, which is why you want to ask the client some questions to understand the data requirements.
        This is the workflow you have been following:
            1. Converse with the client to understand the data requirements.
            2. Ask questions about the product the client is working on.
            3. Ask for possible columns and the data types. 
            4. Ask for the number of rows and the distribution of the data.
            5. Create a Python script that the client can work with to generate the data.
            6. Review the generated code with the client requirements.

        Return the code to the client for review.

        Current conversation:
        {history}
        Human: {input}
        AI Assistant:"""
        self.prompt = PromptTemplate(input_variables=["history", "input"], template=self.template)
        self.conversation = ConversationChain(
            prompt=self.prompt,
            llm=self.chat,
            verbose=True,
            memory=ConversationBufferWindowMemory(k=10, ai_prefix="AI Assistant"),
        )

    def predict(self, input_text):
        return self.conversation.predict(input=input_text)