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"}) |