Update main.py
Browse files
    	
        main.py
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ from langchain.schema import StrOutputParser 
     | 
|
| 16 | 
         
             
            from langchain.schema.runnable import Runnable
         
     | 
| 17 | 
         
             
            from langchain.schema.runnable.config import RunnableConfig
         
     | 
| 18 | 
         
             
            from langchain.schema.runnable import Runnable, RunnablePassthrough, RunnableLambda
         
     | 
| 19 | 
         
            -
            from  
     | 
| 20 | 
         | 
| 21 | 
         
             
            @cl.password_auth_callback
         
     | 
| 22 | 
         
             
            def auth_callback(username: str, password: str):
         
     | 
| 
         @@ -47,16 +47,6 @@ async def chat_profile(): 
     | 
|
| 47 | 
         
             
                    cl.ChatProfile(name="Imagestream",markdown_description="Requêter sur un ensemble d'images",icon="./public/logo-ofipe.jpg",),
         
     | 
| 48 | 
         
             
                ]
         
     | 
| 49 | 
         | 
| 50 | 
         
            -
            @cl.step(type="llm")
         
     | 
| 51 | 
         
            -
            async def IA():
         
     | 
| 52 | 
         
            -
                os.environ['HUGGINGFACEHUB_API_TOKEN'] = os.environ['HUGGINGFACEHUB_API_TOKEN']
         
     | 
| 53 | 
         
            -
                repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
         
     | 
| 54 | 
         
            -
             
     | 
| 55 | 
         
            -
                llm = HuggingFaceEndpoint(
         
     | 
| 56 | 
         
            -
                    repo_id=repo_id, max_new_tokens=8000, temperature=1.0, task="text2text-generation", streaming=True
         
     | 
| 57 | 
         
            -
                )
         
     | 
| 58 | 
         
            -
                return llm
         
     | 
| 59 | 
         
            -
                
         
     | 
| 60 | 
         
             
            @cl.on_chat_start
         
     | 
| 61 | 
         
             
            async def start():
         
     | 
| 62 | 
         
             
                await cl.Message(f"> REVIEWSTREAM").send()
         
     | 
| 
         @@ -90,18 +80,14 @@ async def start(): 
     | 
|
| 90 | 
         
             
                {context}
         
     | 
| 91 | 
         
             
                {question} [/INST] </s>
         
     | 
| 92 | 
         
             
                """
         
     | 
| 93 | 
         
            -
                prompt = PromptTemplate(template=template, input_variables=["question","context"])
         
     | 
| 94 | 
         
            -
                #llm = await IA()
         
     | 
| 95 | 
         
            -
                #chain = (
         
     | 
| 96 | 
         
            -
                #    RunnablePassthrough.assign(
         
     | 
| 97 | 
         
            -
                #        history=RunnableLambda(memory.load_memory_variables) | itemgetter("history")
         
     | 
| 98 | 
         
            -
                #    )
         
     | 
| 99 | 
         
            -
                #    | prompt | llm
         
     | 
| 100 | 
         
            -
                #)
         
     | 
| 101 | 
         
            -
                #cl.user_session.set("runnable", chain)
         
     | 
| 102 | 
         | 
| 103 | 
         
            -
             
     | 
| 104 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 105 | 
         
             
                os.environ['PINECONE_API_KEY'] = os.environ['PINECONE_API_KEY']
         
     | 
| 106 | 
         
             
                embeddings = HuggingFaceEmbeddings()
         
     | 
| 107 | 
         
             
                index_name = "all-venus"
         
     | 
| 
         @@ -109,16 +95,38 @@ async def main(message: cl.Message): 
     | 
|
| 109 | 
         
             
                    api_key=os.environ['PINECONE_API_KEY']
         
     | 
| 110 | 
         
             
                )
         
     | 
| 111 | 
         
             
                index = pc.Index(index_name)
         
     | 
| 112 | 
         
            -
                memory = cl.user_session.get("memory")
         
     | 
| 113 | 
         
            -
                runnable = cl.user_session.get("runnable")
         
     | 
| 114 | 
         
            -
                
         
     | 
| 115 | 
         
             
                xq = embeddings.embed_query(message.content)
         
     | 
| 116 | 
         
             
                xc = index.query(vector=xq, filter={"categorie": {"$eq": "bibliographie-OPP-DGDIN"}},top_k=150, include_metadata=True)
         
     | 
| 117 | 
         
             
                context_p = ""
         
     | 
| 118 | 
         
             
                for result in xc['matches']:
         
     | 
| 119 | 
         
             
                    context_p = context_p + result['metadata']['text']
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 120 | 
         
             
                msg = cl.Message(author="Assistant Reviewstream",content="")
         
     | 
| 121 | 
         
            -
                async for chunk in runnable.astream({"question": message.content 
     | 
| 122 | 
         
             
                        config=RunnableConfig(callbacks=[cl.AsyncLangchainCallbackHandler(stream_final_answer=True)])):
         
     | 
| 123 | 
         
             
                    await msg.stream_token(chunk)
         
     | 
| 124 | 
         | 
| 
         | 
|
| 16 | 
         
             
            from langchain.schema.runnable import Runnable
         
     | 
| 17 | 
         
             
            from langchain.schema.runnable.config import RunnableConfig
         
     | 
| 18 | 
         
             
            from langchain.schema.runnable import Runnable, RunnablePassthrough, RunnableLambda
         
     | 
| 19 | 
         
            +
            from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
         
     | 
| 20 | 
         | 
| 21 | 
         
             
            @cl.password_auth_callback
         
     | 
| 22 | 
         
             
            def auth_callback(username: str, password: str):
         
     | 
| 
         | 
|
| 47 | 
         
             
                    cl.ChatProfile(name="Imagestream",markdown_description="Requêter sur un ensemble d'images",icon="./public/logo-ofipe.jpg",),
         
     | 
| 48 | 
         
             
                ]
         
     | 
| 49 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 50 | 
         
             
            @cl.on_chat_start
         
     | 
| 51 | 
         
             
            async def start():
         
     | 
| 52 | 
         
             
                await cl.Message(f"> REVIEWSTREAM").send()
         
     | 
| 
         | 
|
| 80 | 
         
             
                {context}
         
     | 
| 81 | 
         
             
                {question} [/INST] </s>
         
     | 
| 82 | 
         
             
                """
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 83 | 
         | 
| 84 | 
         
            +
                os.environ['HUGGINGFACEHUB_API_TOKEN'] = os.environ['HUGGINGFACEHUB_API_TOKEN']
         
     | 
| 85 | 
         
            +
                repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
         
     | 
| 86 | 
         
            +
             
     | 
| 87 | 
         
            +
                llm = HuggingFaceEndpoint(
         
     | 
| 88 | 
         
            +
                    repo_id=repo_id, max_new_tokens=8000, temperature=1.0, task="text2text-generation", streaming=True
         
     | 
| 89 | 
         
            +
                )
         
     | 
| 90 | 
         
            +
                
         
     | 
| 91 | 
         
             
                os.environ['PINECONE_API_KEY'] = os.environ['PINECONE_API_KEY']
         
     | 
| 92 | 
         
             
                embeddings = HuggingFaceEmbeddings()
         
     | 
| 93 | 
         
             
                index_name = "all-venus"
         
     | 
| 
         | 
|
| 95 | 
         
             
                    api_key=os.environ['PINECONE_API_KEY']
         
     | 
| 96 | 
         
             
                )
         
     | 
| 97 | 
         
             
                index = pc.Index(index_name)
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 98 | 
         
             
                xq = embeddings.embed_query(message.content)
         
     | 
| 99 | 
         
             
                xc = index.query(vector=xq, filter={"categorie": {"$eq": "bibliographie-OPP-DGDIN"}},top_k=150, include_metadata=True)
         
     | 
| 100 | 
         
             
                context_p = ""
         
     | 
| 101 | 
         
             
                for result in xc['matches']:
         
     | 
| 102 | 
         
             
                    context_p = context_p + result['metadata']['text']
         
     | 
| 103 | 
         
            +
                
         
     | 
| 104 | 
         
            +
                prompt = ChatPromptTemplate.from_messages(
         
     | 
| 105 | 
         
            +
                    [
         
     | 
| 106 | 
         
            +
                        (
         
     | 
| 107 | 
         
            +
                            "system",
         
     | 
| 108 | 
         
            +
                            f"Contexte : Vous êtes un chercheur de l'enseignement supérieur et vous êtes doué pour faire des analyses d'articles de recherche sur les thématiques liées à la pédagogie. En fonction des informations suivantes et du contexte suivant seulement et strictement. Contexte : {context_p}, réponds à la question suivante de la manière la plus pertinente, la plus exhaustive et la plus détaillée possible. ",
         
     | 
| 109 | 
         
            +
                        ),
         
     | 
| 110 | 
         
            +
                        MessagesPlaceholder(variable_name="history"),
         
     | 
| 111 | 
         
            +
                        ("human", "{question}, dans le contexte fourni."),
         
     | 
| 112 | 
         
            +
                    ]
         
     | 
| 113 | 
         
            +
                )
         
     | 
| 114 | 
         
            +
                runnable = (
         
     | 
| 115 | 
         
            +
                    RunnablePassthrough.assign(
         
     | 
| 116 | 
         
            +
                        history=RunnableLambda(memory.load_memory_variables) | itemgetter("history")
         
     | 
| 117 | 
         
            +
                    )
         
     | 
| 118 | 
         
            +
                    | prompt
         
     | 
| 119 | 
         
            +
                    | model
         
     | 
| 120 | 
         
            +
                )
         
     | 
| 121 | 
         
            +
                cl.user_session.set("runnable", runnable)
         
     | 
| 122 | 
         
            +
                
         
     | 
| 123 | 
         
            +
            @cl.on_message
         
     | 
| 124 | 
         
            +
            async def main(message: cl.Message):
         
     | 
| 125 | 
         
            +
                memory = cl.user_session.get("memory")
         
     | 
| 126 | 
         
            +
                runnable = cl.user_session.get("runnable")
         
     | 
| 127 | 
         
            +
                
         
     | 
| 128 | 
         
             
                msg = cl.Message(author="Assistant Reviewstream",content="")
         
     | 
| 129 | 
         
            +
                async for chunk in runnable.astream({"question": message.content},
         
     | 
| 130 | 
         
             
                        config=RunnableConfig(callbacks=[cl.AsyncLangchainCallbackHandler(stream_final_answer=True)])):
         
     | 
| 131 | 
         
             
                    await msg.stream_token(chunk)
         
     | 
| 132 | 
         |