Я новичок в Langgraph и учиюсь создавать график для вычисления последовательности Fibonacci. У программы есть два узла: один ответственный за обновление последовательности Фибоначчи, а другой за управление петлей. Полный код заключается в следующем: < /p>
from langchain_core.runnables import Runnable
from collections.abc import Iterable
from langgraph.graph import StateGraph
from pydantic import BaseModel
from typing import Any, Dict, Annotated
from langgraph.constants import END
def append_to_list(a : list, b) -> list:
print(f"append_to_list:{a}, {b}")
if isinstance(b, Iterable) and not isinstance(b, str):
a.extend(b)
else:
a.append(b)
return a
class Node(Runnable):
def __init__(self, name : str):
self.name = name
def invoke(self, input: Any, config: Dict | None = None) -> Any:
c = input.a + input.b
print(f"{self.name}:{input}")
return {"a":input.b, "b":c, "fibonacci_list":c}
class ConditionalNode(Runnable):
def __init__(self, name : str, threshold: int):
self.threshold = threshold
self.name = name
def invoke(self, input: Any, config) -> Any:
print(f"{self.name}:{input}")
return {"path" : input.b >= self.threshold}
class State(BaseModel):
a : int
b : int
fibonacci_list : Annotated[list[int], append_to_list]
graph = StateGraph(State)
graph.add_node("n1", Node(name = "n1"))
graph.add_conditional_edges("n1", ConditionalNode(name = "CN", threshold = 10), {True : END, False: "n1"})
graph.set_entry_point("n1")
g = graph.compile()
s = g.invoke({"a":1, "b":1, "fibonacci_list":[1, 1]})
print(s)
< /code>
Узел N1 отвечает за вычисление последнего значения в последовательности Fibonacci и возврата обновлений в состояние графика. Функция append_to_list предназначена для добавления вновь сгенерированного значения fibonacci_list в список Fibonacci_list в состояние графика. Первоначально я думал, что append_to_list будет называется только один раз после того, как N1 завершает выполнение, и что конечным результатом будет полная последовательность Fibonacci. Это приводит к тому, что дублирующие значения добавляются к последовательности Фибоначчи. Например, я ожидал получить [1, 1, 2, 3, 5, 8, 13], но вместо этого я получил [1, 1, 2, 2, 3, 3, 5, 5, 8, 8, 13, 13].
Как я могу предотвратить условное крайнее преимущество.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... oked-twice
Условное преимущество в лангграфе заставляет функцию уменьшения дважды. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Условное преимущество в лангграфе заставляет функцию уменьшения дважды.
Anonymous » » в форуме Python - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Условное преимущество в лангграфе заставляет функцию уменьшения дважды.
Anonymous » » в форуме Python - 0 Ответы
- 1 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Условное преимущество в лангграфе заставляет функцию уменьшения дважды.
Anonymous » » в форуме Python - 0 Ответы
- 1 Просмотры
-
Последнее сообщение Anonymous
-