51 lines
1.8 KiB
Python
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()
|