Код: Выделить всё
builder = StateGraph(MyState)
# nodes
builder.add_node("reasoner", agent_main_reasoner)
builder.add_node("tools", ToolNode(mytools)
# edges
builder.add_edge(START, "reasoner")
builder.conditional_edges("reasoner", tools_condition)
builder.add_edge("tools", "reasoner")
# Compile
my_graph = builder.compile()
< /code>
Мне нужно как прочитать, так и записать в мои инструменты. Однако, когда я пытаюсь сделать это - LLM игнорирует инструмент и никогда не запускает его. Например, когда у меня есть базовый инструмент в my_tools
Код: Выделить всё
my_tool_desc = "If a user asks about \"yeehaws\" this tool will return up-to-date information"
@tool(name_or_callable="my_tool_fun", description=my_tool_desc)
async def my_tool_func():
print("!!!HELLO FROM MY TOOL!!!")
return "All the 10 yees have hawed."
< /code>
Если я запускаю график, спрашивая: «Сколько дайвов?» - Это выполнит функцию, я увижу печать, и LLM ответит, говоря, как «10 Yeehaws» или что -то в этом роде.class MyState(TypedDict):
user_query: str
model_context: Annotated[List[str], operator.add]
async def my_tool_func(state: Annotated[MyState, InjectedState]):
q = state["user_query"]
print(f"!!!HELLO FROM MY TOOL!!! Query: {q}")
return "All the 10 yees have hawed."
< /code>
Используя Chatgpt и случайный поток GitHub, в основном он сказал, чтобы попытаться добавить нестоятельный параметр, и его не проигнорируют. Только параметр состояния будет проигнорирован, но безрезультатно. < /P>
my_tool_desc = "If a user asks about \"yeehaws\" this tool will return up-to-date information.\nARGUMENTS:\n\t- query: (str) Pass the User's original query \"user_query\" from state."
@tool(name_or_callable="my_tool_fun", description=my_tool_desc)
async def my_tool_func(query: str, state: Annotated[MyState, InjectedState]):
q = state["user_query"]
print(f"!!!HELLO FROM MY TOOL!!! State: {q} - Generated: {query}")
return "All the 10 yees have hawed."
< /code>
Это также не удается. Имейте в виду, что комбинированная версия также игнорируется, LOL. < /P>
@tool(name_or_callable="my_tool_fun", description=my_tool_desc)
async def my_tool_func() -> Command:
print(f"!!!HELLO FROM MY TOOL!!!")
return Command(update={"model_context": ["All the 10 yees have hawed."]})
< /code>
Как я могу сделать так, чтобы мои инструменты, касающиеся состояния, не игнорируются? Есть способ или я обречен?
Большое спасибо:-)
Подробнее здесь: https://stackoverflow.com/questions/796 ... hing-state