24.4.25

docker desktop sql server

 https://www.youtube.com/watch?v=Y7CMbve-Mos

télécharger docker desktop : https://www.docker.com/products/docker-desktop/

sur http://mcr.microsoft.com/, cliquer sur "Category - Databases" et sélectionner "Microsoft SQL Server Ubuntu based Images"

dans "About" copier la commande pour 2019-latest --> docker pull mcr.microsoft.com/mssql/server:2019-latest

lancer la commande dans un terminal

lancer la commande : docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 --name sqlserver --hostname sqlserver -d mcr.microsoft.com/mssql/server:2019-latest

- ON TROUVE LA COMMANDE DANS LA PARTIE "USAGE" DE LA PAGE DE TELECHARGEMENT

- en lançant la commande cela créé le docker dans docker desktop aussi (avec le bon nom)

en passant la commande "docker ps" on doit voir apparaître le docker up

ensuite on se connecte à la base de données :

- server : localhost

- login : sa

- password : yourStrong(!)Password

- select @@VERSION

docker stop sqlserver

url utiles : https://hub.docker.com/

--> podman

17.4.25

ollama_deepseek_pdf_streamlit

def load_pdf(file):
    with open("temp.pdf", "wb") as f:
        f.write(file.getvalue())
    loader = PyPDFLoader("temp.pdf")
    return loader.load()

def get_pdf_first_page_image(file):
    with open("temp.pdf", "wb") as f:
        f.write(file.getvalue())
    doc = pymupdf.open("temp.pdf")
    os.makedirs("static", exist_ok=True)  # Ensure storage directory exists
    pix = doc[0].get_pixmap()
    image_path = "static/first_page.png"
    pix.save(image_path)
    return image_path

def chunk_documents(docs):
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
    return text_splitter.split_documents(docs)

def create_retriever(docs_json):
    docs = json.loads(docs_json)
    embedder = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
    vector = FAISS.from_texts(
        [doc["page_content"] for doc in docs],
        embedder,
        metadatas=[{"source": doc["metadata"].get("source", "Uploaded PDF")} for doc in docs]
    )
    return vector.as_retriever(search_type="similarity", search_kwargs={"k": 3})

def build_prompt():
    prompt = """
    1. Use the following context to answer the question.
    2. If you don't know the answer, say "I don't know."
    3. Keep the answer concise (3-4 sentences).
   
    Context: {context}
   
    Question: {question}
   
    Helpful Answer:"""
    return PromptTemplate.from_template(prompt)

def build_qa_chain(retriever, llm):
    prompt = build_prompt()
    llm_chain = LLMChain(llm=llm, prompt=prompt, verbose=True)
    document_prompt = PromptTemplate(
        input_variables=["page_content", "source"],
        template="Context:\ncontent:{page_content}\nsource:{source}",
    )
    combine_documents_chain = StuffDocumentsChain(
        llm_chain=llm_chain,
        document_variable_name="context",
        document_prompt=document_prompt,
    )
    return RetrievalQA(
        combine_documents_chain=combine_documents_chain,
        retriever=retriever,
        return_source_documents=True,
    )

def main():
    st.set_page_config(layout="wide")
    st.title("🚀 Fast RAG-based QA with DeepSeek R1")
   
    with st.sidebar:
        uploaded_file = st.file_uploader("Upload a PDF file", type="pdf")
       
        if uploaded_file:
            try:
                image_path = get_pdf_first_page_image(uploaded_file)
                st.image(image_path, caption="First Page Preview", use_column_width=True)
            except Exception as e:
                st.error("Failed to load preview: " + str(e))
   
    if uploaded_file:
        with st.spinner("🔄 Processing PDF..."):
            retriever = process_pdf(uploaded_file)
       
        llm = get_llm()
        qa_chain = build_qa_chain(retriever, llm)
       
        user_input = st.text_input("Enter your question:")
       
        if user_input:
            with st.spinner("🤖 Generating response..."):
                response = qa_chain.invoke({"query": user_input})["result"]
                st.write("### 📜 Answer:")
                st.write(response)
    else:
        st.info("📥 Please upload a PDF file to proceed.")

25.3.25

install environnement développement ubuntu 24.04 python

 depuis le store :
- vscode
- jupyterlab (puis installer python depuis la)
sudo apt-get install python3-pip
sudo apt-get install python3-numpy (pour installer un package)
https://www.cherryservers.com/blog/install-pip-ubuntu

20.2.25

Postman variable token

- créer une collection
- créer une request
- dans "Authorization", "Auth Type" : "Bearer Token", "Token" : {{MON_TOKEN}}
- sur la collection
- clic droite, Edit
- Scripts / Pre-request
pm.sendRequest({
    url: "https://login.microsoftonline.com/XXX/oauth2/v2.0/token",
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: {
        mode: 'urlencoded', 
        urlencoded: [
            { key: "grant_type", value: 'client_credentials' },
            { key: "client_id", value: 'XXX' },
            { key: "client_secret", value: 'XXX' },
            { key: "scope", value: 'https://XXX.crm4.dynamics.com/.default' }
        ]
    }
}      ,
(err, res) => {
    if (err) {
        console.log(err);
        return;
    }
    // Vérifiez si le statut de la réponse est 200
    if (res.code === 200) {
              console.log("OK récupération du token:", res);
        const responseJson = res.json();
        const token = responseJson.access_token;
        // Sauvegarder le token dans une variable d'environnement de collection
        pm.collectionVariables.set("MON_TOKEN", token);
    } else {
        console.log("Erreur lors de la récupération du token:", res);
    }
});

13.2.25

exemples github desktop + branches

 - créer un projet sur GitHub.com
- depuis GitHub desktop, faire un clone du projet
- créer un projet C#
- commiter le premier code sur GitHub
- depuis GitHub desktop créer une nouvelle branche "ajout_writeline"
- publish la branche
- ajouter du code dans program.cs
- commiter/push dans la brahce "ajout_writeline"
- depuis GitHub desktop, revenir sur la branche "main"
--> le code ajouté doit disparaitre
- ajout d'une méthode dans program.cs
- commit push dans la branche 'main'
- depuis GitHub desktop, revenir sur la branche "ajout_writeline"
- depuis GitHub desktop, "Create Pull Request"
- si ok, merge pull request
- delete branche "ajout_writeline"
- depuis GitHub desktop, se remettre sur la branche "main" et faire un refresh
--> le code doit être fusionné
- depuis GitHub desktop, supprimer la branche également