honcho/example/cli/main.py

54 lines
1.6 KiB
Python

from typing import List
from langchain.prompts import ChatPromptTemplate
from langchain.schema import AIMessage, HumanMessage, SystemMessage
from langchain_community.chat_models.fake import FakeListChatModel
from honcho import Client as HonchoClient
# from client import HonchoClient
honcho = HonchoClient(base_url="http://localhost:8000")
responses = ["Fake LLM Response :)"]
llm = FakeListChatModel(responses=responses)
system = SystemMessage(
content="You are world class technical documentation writer. Be as concise as possible"
)
user = "CLI-Test"
session = honcho.create_session(user_id=user)
def langchain_message_converter(messages: List):
new_messages = []
for message in messages:
if message.is_user:
new_messages.append(HumanMessage(content=message.content))
else:
new_messages.append(AIMessage(content=message.content))
return new_messages
def chat():
while True:
user_input = input("User: ")
if user_input == "exit":
session.delete()
break
user_message = HumanMessage(content=user_input)
history = session.get_messages()
langchain_history = langchain_message_converter(history)
prompt = ChatPromptTemplate.from_messages(
[system, *langchain_history, user_message]
)
chain = prompt | llm
response = chain.invoke({})
print(type(response))
print(f"AI: {response.content}")
session.create_message(is_user=True, content=user_input)
session.create_message(is_user=False, content=response.content)
chat()