Spaces:
Runtime error
Runtime error
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage | |
from .chat_history import * | |
from .agent import * | |
try: | |
from ..screen.shot import * | |
from ..utils.db import load_model_settings, agents | |
from ..llm import get_model | |
from ..llm_settings import each_message_extension, llm_settings | |
except ImportError: | |
from screen.shot import * | |
from utils.db import load_model_settings, agents | |
from llm import get_model | |
from llm_settings import each_message_extension, llm_settings | |
config = {"configurable": {"thread_id": "abc123"}} | |
def agentic( | |
llm_input, llm_history, client, screenshot_path=None, dont_save_image=False | |
): | |
global agents | |
from crewai import Task, Crew | |
from crewai import Agent as crewai_Agent | |
the_agents = [] | |
for each in agents: | |
the_agents.append( | |
crewai_Agent( | |
role=each["role"], | |
goal=each["goal"], | |
backstory=each["backstory"], | |
llm=get_model(high_context=True), | |
) | |
) | |
agents = the_agents | |
print("LLM INPUT", llm_input) | |
def image_explaination(): | |
the_message = [ | |
{"type": "text", "text": "Explain the image"}, | |
] | |
if screenshot_path: | |
base64_image = encode_image(screenshot_path) | |
the_message.append( | |
{ | |
"type": "image_url", | |
"image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, | |
}, | |
) | |
print("LEN OF İMAGE", len(base64_image)) | |
the_message = HumanMessage(content=the_message) | |
get_chat_message_history().add_message(the_message) | |
the_model = load_model_settings() | |
if llm_settings[the_model]["provider"] == "openai": | |
msg = get_agent_executor().invoke( | |
{"messages": llm_history + [the_message]}, config=config | |
) | |
if llm_settings[the_model]["provider"] == "google": | |
msg = get_agent_executor().invoke( | |
{"messages": llm_history + [the_message]}, config=config | |
) | |
if llm_settings[the_model]["provider"] == "ollama": | |
msg = get_agent_executor().invoke( | |
{ | |
"input": the_message, | |
"chat_history": llm_history, | |
} | |
) | |
the_last_messages = msg["messages"] | |
return the_last_messages[-1].content | |
if screenshot_path: | |
image_explain = image_explaination() | |
llm_input += "User Sent Image and image content is: " + image_explain | |
llm_input = llm_input + each_message_extension | |
task = Task( | |
description=llm_input, expected_output="Answer", agent=agents[0], tools=get_tools() | |
) | |
the_crew = Crew( | |
agents=agents, | |
tasks=[task], | |
full_output=True, | |
verbose=True, | |
) | |
result = the_crew.kickoff()["final_output"] | |
get_chat_message_history().add_message(HumanMessage(content=[llm_input.replace(each_message_extension, "")])) | |
get_chat_message_history().add_message(AIMessage(content=[result])) | |
return result | |
def assistant( | |
llm_input, llm_history, client, screenshot_path=None, dont_save_image=False | |
): | |
if len(agents) != 0: | |
print("Moving to Agentic") | |
return agentic(llm_input, llm_history, client, screenshot_path, dont_save_image) | |
print("LLM INPUT", llm_input) | |
llm_input = llm_input + each_message_extension | |
the_message = [ | |
{"type": "text", "text": f"{llm_input}"}, | |
] | |
if screenshot_path: | |
base64_image = encode_image(screenshot_path) | |
the_message.append( | |
{ | |
"type": "image_url", | |
"image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, | |
}, | |
) | |
print("LEN OF IMAGE", len(base64_image)) | |
the_message = HumanMessage(content=the_message) | |
get_chat_message_history().add_message(the_message) | |
the_model = load_model_settings() | |
if llm_settings[the_model]["provider"] == "openai": | |
msg = get_agent_executor().invoke( | |
{"messages": llm_history + [the_message]}, config=config | |
) | |
if llm_settings[the_model]["provider"] == "google": | |
the_history = [] | |
for message in llm_history: | |
try: | |
if isinstance(message, SystemMessage): | |
the_mes = HumanMessage(content=message.content[0]["text"]) | |
the_history.append(the_mes) | |
elif isinstance(message, HumanMessage): | |
the_mes = HumanMessage(content=message.content[0]["text"]) | |
the_history.append(the_mes) | |
else: | |
the_mes = AIMessage(content=message.content[0]["text"]) | |
the_history.append(the_mes) | |
except: | |
the_mes = AIMessage(content=message.content) | |
the_history.append(the_mes) | |
llm_input += each_message_extension | |
the_last_message = HumanMessage(content=llm_input) | |
msg = get_agent_executor().invoke( | |
{"messages": the_history + [the_last_message]}, config=config | |
) | |
elif llm_settings[the_model]["provider"] == "groq": | |
the_history = [] | |
for message in llm_history: | |
try: | |
if isinstance(message, SystemMessage): | |
the_mes = SystemMessage(content=message.content[0]["text"]) | |
the_history.append(the_mes) | |
elif isinstance(message, HumanMessage): | |
the_mes = HumanMessage(content=message.content[0]["text"]) | |
the_history.append(the_mes) | |
else: | |
the_mes = AIMessage(content=message.content[0]["text"]) | |
the_history.append(the_mes) | |
except: | |
the_mes = AIMessage(content=message.content) | |
the_history.append(the_mes) | |
llm_input += each_message_extension | |
the_last_message = HumanMessage(content=llm_input) | |
msg = get_agent_executor().invoke( | |
{"messages": the_history + [the_last_message]}, config=config | |
) | |
elif llm_settings[the_model]["provider"] == "ollama": | |
msg = get_agent_executor().invoke( | |
{ | |
"input": the_message, | |
"chat_history": llm_history, | |
} | |
) | |
the_last_messages = msg["messages"] | |
if dont_save_image and screenshot_path is not None: | |
currently_messages = get_chat_message_history().messages | |
last_message = currently_messages[-1].content[0] | |
currently_messages.remove(currently_messages[-1]) | |
get_chat_message_history().clear() | |
for message in currently_messages: | |
get_chat_message_history().add_message(message) | |
get_chat_message_history().add_message(HumanMessage(content=[last_message])) | |
get_chat_message_history().add_message(the_last_messages[-1]) | |
# Replace each_message_extension with empty string | |
list_of_messages = get_chat_message_history().messages | |
get_chat_message_history().clear() | |
for message in list_of_messages: | |
try: | |
message.content[0]["text"] = message.content[0]["text"].replace(each_message_extension, "") | |
get_chat_message_history().add_message(message) | |
except: | |
get_chat_message_history().add_message(message) | |
return the_last_messages[-1].content | |