honcho/example/cli/main.py

52 lines
1.5 KiB
Python

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
from honcho.ext.langchain import messages_to_langchain
app_name = str(uuid4())
honcho = Honcho(
app_name=app_name, 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 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 = messages_to_langchain(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()