MadcowD / ell

A language model programming library.
http://docs.ell.so/
MIT License
4.88k stars 280 forks source link

Compute type lexical closures as needed (post v1) #51

Open MadcowD opened 2 months ago

Daniel-ltw commented 4 weeks ago
Traceback (most recent call last):
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 169, in _process_signature_dependency
    dep, _, _uses = lexical_closure(val, already_closed=already_closed, recursion_stack=recursion_stack.copy())
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 91, in lexical_closure
    dependencies, imports, modules = _process_dependencies(func, globals_and_frees, already_closed, recursion_stack, uses)
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 149, in _process_dependencies
    _process_variable(var_name, var_value, dependencies, modules, imports, already_closed, recursion_stack, uses)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 205, in _process_variable
    _process_callable(var_name, var_value, dependencies, already_closed, recursion_stack, uses)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 226, in _process_callable
    _raise_error(f"Failed to capture the lexical closure of global or free variable {var_name}", e, recursion_stack)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 311, in _raise_error
    raise Exception(error_msg)
Exception: Failed to capture the lexical closure of global or free variable sync_playwright. Error: Failed to capture the lexical closure of global or free variable PlaywrightContextManager. Error: Failed to capture the lexical closure of global or free variable greenlet. Error: could not find class definition
Recursion stack: initiate_daily -> load_google_news -> sync_playwright -> PlaywrightContextManager
Recursion stack: initiate_daily -> load_google_news -> sync_playwright
Recursion stack: initiate_daily -> load_google_news

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 174, in _process_signature_dependency
    _process_signature_dependency(item, dependencies, already_closed, recursion_stack, uses)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 191, in _process_signature_dependency
    _raise_error(f"Failed to capture the lexical closure of default parameter {name}", e, recursion_stack)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 311, in _raise_error
    raise Exception(error_msg)
Exception: Failed to capture the lexical closure of default parameter None. Error: Failed to capture the lexical closure of global or free variable sync_playwright. Error: Failed to capture the lexical closure of global or free variable PlaywrightContextManager. Error: Failed to capture the lexical closure of global or free variable greenlet. Error: could not find class definition
Recursion stack: initiate_daily -> load_google_news -> sync_playwright -> PlaywrightContextManager
Recursion stack: initiate_daily -> load_google_news -> sync_playwright
Recursion stack: initiate_daily -> load_google_news
Recursion stack: initiate_daily

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/daniel/dev/news-caster/app/agent.py", line 25, in <module>
    initiate_daily()
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/lmp/_track.py", line 131, in tracked_func
    ell.util.closure.lexically_closured_source(func_to_track, forced_dependencies)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 405, in lexically_closured_source
    _, fnclosure, uses = lexical_closure(func, initial_call=True, recursion_stack=[], forced_dependencies=forced_dependencies)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 94, in lexical_closure
    _process_signature_dependency(v, dependencies, already_closed, recursion_stack, uses, k)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 191, in _process_signature_dependency
    _raise_error(f"Failed to capture the lexical closure of default parameter {name}", e, recursion_stack)
  File "/Users/daniel/dev/news-caster/venv/lib/python3.12/site-packages/ell/util/closure.py", line 311, in _raise_error
    raise Exception(error_msg)
Exception: Failed to capture the lexical closure of default parameter tools. Error: Failed to capture the lexical closure of default parameter None. Error: Failed to capture the lexical closure of global or free variable sync_playwright. Error: Failed to capture the lexical closure of global or free variable PlaywrightContextManager. Error: Failed to capture the lexical closure of global or free variable greenlet. Error: could not find class definition
Recursion stack: initiate_daily -> load_google_news -> sync_playwright -> PlaywrightContextManager
Recursion stack: initiate_daily -> load_google_news -> sync_playwright
Recursion stack: initiate_daily -> load_google_news
Recursion stack: initiate_daily
Recursion stack: initiate_daily

Is this error related to this?

ada-lovecraft commented 2 weeks ago

Seeing this same error when going through the ell.complex Usage example on docs page

Pydantic @ 2.9.2 ell @ 0.1.2