Spaces:
Runtime error
Runtime error
| from langchain_anthropic import ChatAnthropic | |
| from langchain_openai.chat_models import ChatOpenAI | |
| from langchain_community.tools.tavily_search import TavilySearchResults | |
| from langchain_core.prompts import ChatPromptTemplate | |
| from langchain_core.pydantic_v1 import BaseModel, Field | |
| from langchain_core.runnables import Runnable, RunnableConfig | |
| from langgraph.checkpoint.sqlite import SqliteSaver | |
| from erp_core.state_definer import State | |
| import time | |
| from datetime import datetime | |
| import getpass | |
| class Assistant: | |
| """ | |
| Assistant class to handle the conversation with the user. | |
| """ | |
| def __init__(self, runnable: Runnable): | |
| self.runnable = runnable | |
| def __call__(self, state: State, config: RunnableConfig): | |
| while True: | |
| result = self.runnable.invoke(state) | |
| if not result.tool_calls and ( | |
| not result.content | |
| or isinstance(result.content, list) | |
| and not result.content[0].get("text") | |
| ): | |
| messages = state["messages"] + [("user", "Respond with a real output.")] | |
| state = {**state, "messages": messages} | |
| messages = state["messages"] + [("user", "Respond with a real output.")] | |
| state = {**state, "messages": messages} | |
| else: | |
| break | |
| return {"messages": result} | |
| class CompleteOrEscalate(BaseModel): | |
| """A tool to mark the current task as completed and/or to escalate control of the dialog to the main assistant, | |
| who can re-route the dialog based on the user's needs.""" | |
| cancel: bool = True | |
| reason: str | |
| class Config: | |
| schema_extra = { | |
| "example": { | |
| "cancel": True, | |
| "reason": "User changed their mind about the current task.", | |
| }, | |
| "example 2": { | |
| "cancel": True, | |
| "reason": "I have fully completed the task.", | |
| }, | |
| "example 3": { | |
| "cancel": False, | |
| "reason": "I need to search the user's emails or calendar for more information.", | |
| }, | |
| } |