from typing import List from uuid import uuid4 from langchain.prompts import ChatPromptTemplate from langchain.schema import AIMessage, HumanMessage, SystemMessage from langchain_community.chat_models.fake import FakeListChatModel from honcho import Honcho app_name = str(uuid4()) # honcho = Honcho(app_id=app_id, base_url="http://localhost:8000") # uncomment to use local honcho = Honcho(app_name=app_name) # uses demo server at https://demo.honcho.dev honcho.initialize() responses = ["Fake LLM Response :)"] llm = FakeListChatModel(responses=responses) system = SystemMessage( content="You are world class technical documentation writer. Be as concise as possible" ) user_name = "CLI-Test" user = honcho.create_user(user_name) session = user.create_session() 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.close() break user_message = HumanMessage(content=user_input) history = list(session.get_messages_generator()) 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()