Code writing
Обновлено 24 мая 2024
Example of how to use LCEL to write Python code.
%pip install --upgrade --quiet gigachain-core gigachain-experimental langchain-openai
from langchain_community.chat_models import GigaChat
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import (
ChatPromptTemplate,
)
from langchain_experimental.utilities import PythonREPL
template = """Write some python code to solve the user's problem.
Return only python code in Markdown format, e.g.:
```python
....
```"""
prompt = ChatPromptTemplate.from_messages([("system", template), ("human", "{input}")])
model = GigaChat(credentials="<token>", model="<не ниже -large>")
def _sanitize_output(text: str):
_, after = text.split("<code>{python}")
return after.split("</code>")[0]
def _print_output(text: str):
print("Running code: \n" + text + "\n")
return text
chain = (
prompt
| model
| StrOutputParser()
| _sanitize_output
| _print_output
| PythonREPL().run
)
chain.invoke({"input": "чему равен 5 факториал?"}).strip()
Running code:
print(5*4*3*2*1)
'120'
chain.invoke(
{"input": "Выведи самое большое трехзначное число, которое делится на 17"}
).strip()
Running code:
# Сохраним максимальное значение
max_num = 0
# Итерируемся по трехзначным числам
for i in range(100, 999):
# Если число делится на 17, то сохраняем его
if i % 17 == 0:
max_num = i
# Выводим результат
print(max_num)
'986'
chain.invoke(
{
"input": "Я положил на счет 1000 рублей под 10% годовых. Каждый год я снимаю со счета 110 рублей. Сколько денег у меня будет через 10 лет с учетом капитализации?"
}
).strip()
Running code:
# Присваиваем переменной базовый депозит
deposit = 1000
# Присваиваем переменной процентную ставку
percentage = 0.1
# Присваиваем переменной сумму ежегодного снятия
withdrawal = 110
# Инициализируем переменную для хранения суммы денег на счету
money = deposit
# Инициализируем переменную для хранения количества лет
years = 0
# Запускаем цикл по количеству лет
while years <= 10:
# Увеличиваем сумму денег на счету на проценты
money += money * percentage
# Вычитаем из суммы денег на счету ежегодное снятие
money -= withdrawal
# Увеличиваем количество лет на единицу
years += 1
# Выводим результат
print(money)
'814.6883293890003'