File size: 3,277 Bytes
481f3b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

# from typing import List
# from typing import Literal
# from langchain.prompts import ChatPromptTemplate
# from langchain_core.utils.function_calling import convert_to_openai_function
# from langchain.output_parsers.openai_functions import JsonOutputFunctionsParser

# # https://livingdatalab.com/posts/2023-11-05-openai-function-calling-with-langchain.html

# class Location(BaseModel):
#     country:str = Field(...,description="The country if directly mentioned or inferred from the location (cities, regions, adresses), ex: France, USA, ...")
#     location:str = Field(...,description="The specific place if mentioned (cities, regions, addresses), ex: Marseille, New York, Wisconsin, ...")

# class QueryAnalysis(BaseModel):
#     """Analyzing the user query"""
    
#     language: str = Field(
#         description="Find the language of the query in full words (ex: French, English, Spanish, ...), defaults to English"
#     )
#     intent: str = Field(
#         enum=[
#             "Environmental impacts of AI",
#             "Geolocated info about climate change",
#             "Climate change",
#             "Biodiversity",
#             "Deep sea mining",
#             "Chitchat",
#         ],
#         description="""
#             Categorize the user query in one of the following category, 

#             Examples:
#             - Geolocated info about climate change: "What will be the temperature in Marseille in 2050"
#             - Climate change: "What is radiative forcing", "How much will
#         """,
#     )
#     sources: List[Literal["IPCC", "IPBES", "IPOS"]] = Field(
#         ...,
#         description="""
#             Given a user question choose which documents would be most relevant for answering their question,
#             - IPCC is for questions about climate change, energy, impacts, and everything we can find the IPCC reports
#             - IPBES is for questions about biodiversity and nature
#             - IPOS is for questions about the ocean and deep sea mining
            
#         """,
#     )
#     date: str = Field(description="The date or period mentioned, ex: 2050, between 2020 and 2050")
#     location:Location
#     # query: str = Field(
#     #     description = """
#     #         Translate to english and reformulate the following user message to be a short standalone question, in the context of an educational discussion about climate change.
#     #         The reformulated question will used in a search engine
#     #         By default, assume that the user is asking information about the last century,
#     #         Use the following examples
            
#     #         ### Examples:
#     #         La technologie nous sauvera-t-elle ? -> Can technology help humanity mitigate the effects of climate change?
#     #         what are our reserves in fossil fuel? -> What are the current reserves of fossil fuels and how long will they last?
#     #         what are the main causes of climate change? -> What are the main causes of climate change in the last century?

#     #         Question in English:
#     #     """
#     # )

# openai_functions = [convert_to_openai_function(QueryAnalysis)]
# llm2 = llm.bind(functions = openai_functions,function_call={"name":"QueryAnalysis"})