Spaces:
Running
Running
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 |
|