honcho/example/cli/main.py

51 lines
1.8 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)
session_id = session["id"]
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":
honcho.delete_session(user, session_id)
break
user_message = HumanMessage(content=user_input)
history = honcho.get_messages_for_session(user, session_id)
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}")
honcho.create_message_for_session(user, session_id, is_user=True, content=user_input)
honcho.create_message_for_session(user, session_id, is_user=False, content=response.content)
chat()