File size: 2,900 Bytes
3d40d3b 1b7e1bb c3f257f eefba2d edc46fa 5431a98 24d5bb3 c72ad56 6bfcb60 5a6fc53 3d40d3b edc46fa c6720e8 edc46fa 9720975 5431a98 da24b26 90964f5 8683f94 ab27551 0e96436 7af326c f7e35ab 0e96436 7af326c 40dcc90 2ce2b7b 40dcc90 04591d4 40dcc90 0e96436 8663b79 edc46fa 8663b79 edc46fa 33017a6 edc46fa 8663b79 edc46fa 8663b79 edc46fa 40dcc90 399936e 40dcc90 5a6fc53 40dcc90 9bdc739 5431a98 b0a79cb 04591d4 2ce2b7b 04591d4 |
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 |
import os
import json
import bcrypt
import pandas as pd
import numpy as np
from typing import List
from pathlib import Path
from langchain_huggingface import HuggingFaceEndpoint
from langchain.schema.runnable.config import RunnableConfig
from langchain.schema import StrOutputParser
from langchain_anthropic import AnthropicLLM, ChatAnthropic
from langchain.agents import AgentExecutor
from langchain.agents.agent_types import AgentType
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent, create_csv_agent
import chainlit as cl
from chainlit.input_widget import TextInput, Select, Switch, Slider
from deep_translator import GoogleTranslator
@cl.step(type="tool")
async def LLMistral():
os.environ['HUGGINGFACEHUB_API_TOKEN'] = os.environ['HUGGINGFACEHUB_API_TOKEN']
repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
llm = HuggingFaceEndpoint(
repo_id=repo_id, max_new_tokens=5300, temperature=0.1, task="text2text-generation", streaming=True
)
return llm
@cl.step(type="tool")
async def LLM():
os.environ['ANTHROPIC_API_KEY'] = os.environ['ANTHROPIC_API_KEY']
llm = AnthropicLLM(model='claude-3-haiku-20240307',temperature=0)
return llm
@cl.set_chat_profiles
async def chat_profile():
return [
cl.ChatProfile(name="Traitement des données d'enquête : «Expé CFA : questionnaire auprès des professionnels de la branche de l'agencement»",markdown_description="Vidéo exploratoire autour de l'événement",icon="/public/logo-ofipe.png",),
]
@cl.set_starters
async def set_starters():
return [
cl.Starter(
label="Répartition du nombre de CAA dans les entreprises",
message="Quel est le nombre de chargé.e d'affaires en agencement dans chaque type d'entreprises?",
icon="/public/request-theme.svg",
)
]
@cl.on_message
async def on_message(message: cl.Message):
await cl.Message(f"> SURVEYIA").send()
model = await LLM()
agent = create_csv_agent(
model,
"./public/ExpeCFA_LP_CAA.csv",
verbose=True,
allow_dangerous_code=True,
agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)
msg = cl.Message(content="")
cb = cl.AsyncLangchainCallbackHandler()
res = await agent.acall("Réponds en langue française à la question suivante :\n" + message.content + "\nDétaille la réponse en faisant une analyse complète en 2000 mots minimum.", callbacks=[cb])
#res = await agent.ainvoke("D'après les informations fournies, réponds en langue française à la question suivante :\n" + message.content + "\nDétaille la réponse en faisant une analyse complète jusqu'à 2000 mots, si cela est nécessaire.")
answer = res['output']
print(res)
await cl.Message(content=GoogleTranslator(source='auto', target='fr').translate(answer)).send() |