File size: 2,794 Bytes
9ca3549 831696a 894b0e2 9ca3549 1f8f1b6 9f9690e 1f8f1b6 9ca3549 1bda5d5 9ca3549 |
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 70 71 72 73 74 75 76 |
import os
import chainlit as cl
import dotenv
from chainlit import CustomElement
from llama_index.core import StorageContext, load_index_from_storage
from vdb import further_retrieve, split_markdown_by_section, build_documents, create_vector_index, completion
import re
# storage_context = StorageContext.from_defaults(persist_dir=f'./md_vector_store')
# index = load_index_from_storage(storage_context)
md_file = "opertgfr2.md"
sections = split_markdown_by_section(md_file)
docs = build_documents(sections)
index = create_vector_index(docs)
dotenv.load_dotenv()
@cl.set_starters
async def set_starters():
questions = [
"C'est quoi les courses et origines",
"Accès aux attributs de personnelisation du système",
"Mise sous tension/arrêt",
# "Qui signe les bon de commande pour superieur de 80000 euros pour ordinateur",
# "Qui signe les bon de commande pour tablette pour les ecoles",
# "Qui signe marchés à procédure adaptée pour 90000 euros pour des plantes",
# "Qui signe marchés à procédure adaptée pour 40000 euros",
# "qui signe les bdc a 25k pour Achat de matériel comptable",
# "Qui signe un bdc d'achat de lampadaire de rue pour 20000 euros ?",
]
return [
cl.Starter(
label=value,
message=value
) for value in questions
]
@cl.on_chat_start
async def on_start():
return
"""https://aqjnuiodpkwdplgeozck.supabase.co/storage/v1/object/public/faq_chunker/images/042eb615b98ba399a470268106a7319da3b4dad9e518bef62182d0e4fdc30988.png"""
@cl.on_message
async def main(message):
is_first = cl.user_session.get("is_first", True)
if is_first:
await cl.Message("", elements=[CustomElement(name="ImageGallery")]).send()
cl.user_session.set("is_first", False)
messages = cl.user_session.get("messages", [])
response = await further_retrieve(message.content, index, messages)
msg = cl.Message("")
message_response = ""
async for token in response:
message_response += token
message_response = re.sub(r"\!\[.*?\]\(images\/(.*)?\)",
# r"""<img classname="m-2 w-full" src="https://aqjnuiodpkwdplgeozck.supabase.co/storage/v1/object/public/faq_chunker/images/\1">""",
r"",
message_response)
await msg.stream_token(message_response, is_sequence=True)
await msg.update()
messages.extend(
[
{"role": "user", "content": message.content},
{"role": "assistant", "content": message_response},
]
)
cl.user_session.set("messages", messages) |