Files

70 lines
2.5 KiB
Python

import sys
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# Конфигурация модели OpenAI через LangChain
llm = ChatOpenAI(
model_name="gpt-3.5-turbo",
temperature=0.7,
)
# Шаблон запроса к модели: сохраняем историю диалога в переменной `history`
prompt_template = PromptTemplate(
input_variables=["history", "user_input"],
template="""
Ты играешь роль ведущего текстовой приключенческой игры.
Тебе дано текущее состояние истории и последнее сообщение игрока.
Ответь как будто продолжаешь сюжет, добавляя новые события, описания и диалоги.
История:
{history}
Игрок: {user_input}
Ответ ведущего:
""",
)
# Создаём цепочку LangChain
chain = LLMChain(llm=llm, prompt=prompt_template)
def main():
"""
Основной цикл игры. Пользователь вводит команды,
которые передаются модели через LangChain.
Команда 'exit' завершает игру.
"""
history = ""
print("Добро пожаловать в текстовую приключенческую игру!")
print("Введите свои действия (или 'exit', чтобы выйти).")
while True:
try:
user_input = input("\nВы: ").strip()
except EOFError:
# Обработка Ctrl-D
print("\nЗавершение игры.")
break
if not user_input:
continue
if user_input.lower() == "exit":
print("Спасибо за игру! До свидания.")
break
# Формируем запрос к модели и получаем ответ
try:
response = chain.run(history=history, user_input=user_input)
except Exception as e:
print(f"Ошибка при обращении к модели: {e}")
continue
# Выводим ответ ведущего
print(f"\nВедущий: {response.strip()}")
# Обновляем историю для следующего шага
history += f"\nИгрок: {user_input}\nВедущий: {response}"
if __name__ == "__main__":
main()