-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
88 lines (75 loc) · 4.24 KB
/
main.py
File metadata and controls
88 lines (75 loc) · 4.24 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
from langchain_gigachat import GigaChat
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_core.chat_history import InMemoryChatMessageHistory
AGENT = GigaChat(
credentials='key',
model='GigaChat-2',
verify_ssl_certs=False
)
SYSTEM_PROMPT = """
Ты ИИ-ассистент, который обрабатывает заявки
Список твоих задач: квалификация лидов, отработка возражений,
донесение выгод, ответы на все вопросы по продукции,
подобрать подходящую мебель, сделать расчёт, дожим рассылками для тех, кто перестал отвечать
"""
PRODUCT_KATALOG = {
"диван": 12345,
"стул": 5000,
"стол": 10421,
"лампа": 100
}
korzina = []
@tool
def vozr(text: str) -> str:
"""Отвечай на возражения и претензии культурно и прилично.
Пытайся преподнести наш продукт как что-то лучшее."""
return f"Отвечай на возражения{text} и претензии{text} культурно и прилично. Пытайся преподнести наш продукт как что-то лучшее."
@tool
def somnenie(text: str) -> str:
"""Если вдруг твой клиент выражает сомнение в покупке услуги, уважительно и приятно донеси ему, что эта услуга стоит своей покупки
Общайся уважительно."""
return f"Если вдруг твой клиент выражает сомнение{text} в покупке услуги, уважительно и приятно донеси ему, что эта услуга стоит своей покупки.Общайся уважительно."
@tool
def raschet(text: str) -> str:
"""
Делай расчёт стоимости товаров о которых пишет твой покупатель
"""
return f"Делай расчёт стоимости товаров, которые хочет купить покупатель, описывая это тебе{text}"
@tool
def add_korzina(text: str) -> str:
"""Добавляет товар в корзину по его названию.
Пример вызова: add_korzina("диван")"""
product_name = text.strip().lower()
if product_name in PRODUCT_KATALOG:
price = PRODUCT_KATALOG[product_name]
korzina.append({"name": product_name, "price": price})
return f"Товар {product_name} добавлен в корзину. Цена - {price} рублей"
else:
return f"Товара {product_name} нет в наличии"
@tool
def verifi(text: str) -> str:
"""Вызывается, если пользователь пишет, что хочет уже оплачивать заказ"""
return f"Вы уверены в том, что хотите платить?"
@tool
def oplata(text: str) -> str:
"""Вызывается после того, как пользователь изъявляет желание об оформлении покупки."""
return (f"Выведи стоимость каждого товара, а после сумму всех вместе\n"
"Реквизиты: СБЕР - 1234 5678 1234 5678")
tools = [vozr, somnenie, raschet, add_korzina, verifi, oplata]
chat = InMemoryChatMessageHistory()
AGENT = create_agent(model=AGENT, tools=tools, system_prompt=SYSTEM_PROMPT)
while True:
question = str(input("Пользователь: "))
chat.add_user_message(question)
full_messages = chat.messages
inputs = {"messages": full_messages}
response_content = ""
for chunk in AGENT.stream(inputs, stream_mode="updates"):
if 'model' in chunk and 'messages' in chunk['model']:
ai_message = chunk['model']['messages'][0]
if ai_message.content:
response_content = ai_message.content
print("Ассистент:", response_content)
if response_content:
chat.add_ai_message(response_content)