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"![](https://aqjnuiodpkwdplgeozck.supabase.co/storage/v1/object/public/faq_chunker/images/\1)",
                                  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)