Условное преимущество в лангграфе заставляет функцию уменьшения дважды.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Условное преимущество в лангграфе заставляет функцию уменьшения дважды.

Сообщение Anonymous »

Я новичок в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Условное преимущество в лангграфе заставляет функцию уменьшения дважды.
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Условное преимущество в лангграфе заставляет функцию уменьшения дважды.
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Условное преимущество в лангграфе заставляет функцию уменьшения дважды.
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Условное преимущество в лангграфе не работает, как и ожидалось
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Langraph - tools_condition - условное преимущество
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»