56 lines
1.7 KiB
Python
56 lines
1.7 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 Client as HonchoClient
|
|
|
|
app_id = str(uuid4())
|
|
|
|
# honcho = HonchoClient(app_id=app_id, base_url="http://localhost:8000") # uncomment to use local
|
|
honcho = HonchoClient(app_id=app_id) # uses demo server at https://demo.honcho.dev
|
|
|
|
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.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()
|