File size: 2,611 Bytes
			
			| 4b31779 e9107c4 e93c888 e9107c4 a5d3f65 e93c888 a5d3f65 4b31779 ce155aa 4b31779 ce155aa 4b31779 683f6dd 4b31779 ce155aa 4b31779 ce155aa 4b31779 ce155aa 4b31779 ce155aa 4b31779 ce155aa 4b31779 ce155aa 4b31779 ce155aa 4b31779 | 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 | #ESTABLISH THE SERVER
from flask import Flask,request
from dotenv import load_dotenv
# Initializing flask app
app = Flask(__name__)
load_dotenv()
@app.route("/", methods=['GET','POST'])
def index():   
    from typing import List
    from langchain.prompts import PromptTemplate
    from langchain_core.output_parsers import JsonOutputParser
    from langchain_core.pydantic_v1 import BaseModel, Field
    from langchain_openai import ChatOpenAI
    from langchain_community.tools.convert_to_openai import format_tool_to_openai_function
    from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
    # Define your desired data structure.
    class FrontEndActions(BaseModel):
        """Structure to pass actions back to the frontend"""
        text: str = Field(description="The text to display on the button")
        type: str = Field(description="This should be a string that identifies the type of action. It can be one of: SuggestGoal, SuggestRiseActivity")
    class ResponseSchema(BaseModel):
        """Final response to the question being asked"""
        message: str = Field(description="final answer to respond to the user")
        #characters: str = Field(description="number of characters in the answer")
        #actions: List[FrontEndActions] = Field(description="List of suggested actions that should be passed back to the frontend to display. The use will click these to enact them. ")
        #tokens: int = Field(description="Count the number of used to produce the response")
    # Set up a parser + inject instructions into the prompt template.
    parser = JsonOutputParser(pydantic_object=ResponseSchema)
    prompt = PromptTemplate(
        template="""Answer the user query.\n{format_instructions}\n{input}\n{agent_scratchpad}""",
        input_variables=["input"],
        partial_variables={"format_instructions": parser.get_format_instructions()}
    )
    print(parser)
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    from langchain.agents import tool
    @tool
    def get_word_length():
        """Returns the length of a word."""
        return 1
    tools = [get_word_length]
    from langchain_openai import ChatOpenAI
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    from langchain.agents import create_openai_functions_agent
    agent = create_openai_functions_agent(llm, tools, prompt)
    from langchain.agents import AgentExecutor
    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    response = agent_executor.invoke({"input": "What are you?"})
    return response['output'] |