AtikinNT commited on
Commit
a2297eb
·
1 Parent(s): a16a671

example on fake dataframe

Browse files
__pycache__/agent.cpython-310.pyc ADDED
Binary file (4.18 kB). View file
 
__pycache__/data.cpython-310.pyc ADDED
Binary file (214 Bytes). View file
 
agent.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from smolagents import LiteLLMModel
2
+ from smolagents import CodeAgent
3
+ from smolagents.local_python_executor import LocalPythonExecutor
4
+ from data import df
5
+
6
+
7
+ model = LiteLLMModel(
8
+ api_key='nyjyVJhQqTEz12YFL4fgkmYtqHsU3sju',
9
+ model_id='mistral/mistral-small-latest'
10
+ )
11
+
12
+ custom_executor = LocalPythonExecutor(['pandas'])
13
+
14
+ agent = CodeAgent(
15
+ tools=[],
16
+ model=model,
17
+ additional_authorized_imports=['pandas']
18
+ )
19
+ agent.python_executor.send_variables({'df': df})
20
+
21
+ user_prompt = '''
22
+ Сгенерируй код для следующей задачи
23
+
24
+ # Краткая постановка задачи
25
+ {task}
26
+
27
+ # Описание таблицы
28
+ Эта таблица представляет собой базу данных сотрудников банка. Она содержит информацию о сотрудниках, их должностях, подразделениях, местоположении и статусе прохождения обучающих курсов. Таблица предназначена для отслеживания кадровых данных и контроля за выполнением обучающих программ сотрудниками.
29
+
30
+ Таблица лежит в переменной df
31
+
32
+ # Описание колонок таблицы
33
+ User ID (Идентификатор пользователя)
34
+
35
+ Описание: Уникальный идентификатор сотрудника в базе данных.
36
+ Тип данных: Целое число (Integer).
37
+ ФИ (Фамилия Имя)
38
+
39
+ Описание: Полное имя сотрудника.
40
+ Тип данных: Строка (String).
41
+ Должность
42
+
43
+ Описание: Название должности сотрудника в банке.
44
+ Тип данных: Строка (String).
45
+ Примечание: Содержит до 30 уникальных должностей, связанных с банковской деятельностью.
46
+ Дата вступления в должность
47
+
48
+ Описание: Дата, когда сотрудник занял свою текущую должность.
49
+ Тип данных: Дата (Date).
50
+ Почта
51
+
52
+ Описание: Электронная почта сотрудника.
53
+ Тип данных: Строка (String).
54
+ Подразделение
55
+
56
+ Описание: Название подразделения банка, в котором работает сотрудник.
57
+ Тип данных: Строка (String).
58
+ Примечание: Содержит 10 уникальных подразделений, таких как HR, IT и т.д.
59
+ ГОСБ (Головное отделение)
60
+
61
+ Описание: Местоположение подразделения банка, в котором работает сотрудник.
62
+ Тип данных: Строка (String).
63
+ Примечание: Содержит до 12 уникальных регионов России.
64
+ Назначено курсов
65
+
66
+ Описание: Общее количество курсов, назначенных сотруднику для прохождения.
67
+ Тип данных: Целое число (Integer).
68
+ Пройдено курсов
69
+
70
+ Описание: Количество курсов, которые сотрудник успешно завершил.
71
+ Тип данных: Целое число (Integer).
72
+ Не пройдено курсов
73
+
74
+ Описание: Количество курсов, которые сотрудник еще не начал или не завершил.
75
+ Тип данных: Целое число (Integer).
76
+ Просрочено курсов
77
+
78
+ Описание: Количество курсов, срок прохождения которых истек.
79
+ Тип данных: Целое число (Integer).
80
+ '''
81
+
82
+ def run(task: str):
83
+ prompt = user_prompt.format(task=task)
84
+ result = agent.run(prompt)
85
+ return result
app.py CHANGED
@@ -1,4 +1,49 @@
1
  import streamlit as st
 
 
 
2
 
3
- x = st.slider('Select a value')
4
- st.write(x, 'squared is', x * x)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ import pandas as pd
3
+ from data import df
4
+ import agent
5
 
6
+ st.title("Excel Agent")
7
+
8
+ st.dataframe(df, use_container_width=True)
9
+
10
+
11
+ # Initialize chat history
12
+ if "messages" not in st.session_state:
13
+ st.session_state.messages = []
14
+
15
+ # Display chat messages from history on app rerun
16
+ for message in st.session_state.messages:
17
+ with st.chat_message(message["role"]):
18
+ st.markdown(message["content"])
19
+
20
+ # React to user input
21
+ if prompt := st.chat_input("Как я могу вам помочь?"):
22
+ # Display user message in chat message container
23
+ with st.chat_message("user"):
24
+ st.markdown(prompt)
25
+ # Add user message to chat history
26
+ st.session_state.messages.append({"role": "user", "content": prompt})
27
+
28
+ if prompt:
29
+ response = agent.run(prompt)
30
+ # Display assistant response in chat message container
31
+ with st.chat_message("assistant"):
32
+ print(type(response))
33
+ if type(response) is pd.Series or type(response) is pd.DataFrame:
34
+ st.dataframe(response)
35
+ else:
36
+ st.markdown(response)
37
+ # Add assistant response to chat history
38
+ st.session_state.messages.append({"role": "assistant", "content": response})
39
+
40
+ with st.sidebar:
41
+ st.title('Примеры запросов')
42
+ st.write('1) Найди ГОСБ, который встречается чаще всего в таблице.')
43
+ st.write('2) Сгруппируй по полю ГОСБ и выведи средние значения по значениям ГОСБ по колонке Пройденных курсов.')
44
+ st.write('3) Сколько в среднем курсов не прошло в разрезе подразделений банка?')
45
+ st.write('4) Сделай сравнительную статистику по пройденным курсам за 21 и 22 год')
46
+
47
+ def clear_chat_history():
48
+ st.session_state.messages = [{"role": "assistant", "content": "Как я могу вам помочь?"}]
49
+ st.sidebar.button('Очистить историю чата', on_click=clear_chat_history)
data.py ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ import pandas as pd
2
+
3
+ df = pd.read_excel('./bank_employees_data.xlsx')