From 814cfc5c7a9412883cd75fd231bab4242e18a65a Mon Sep 17 00:00:00 2001 From: whimo Date: Fri, 3 May 2024 22:06:13 +0400 Subject: [PATCH 1/4] Various integration test improvements & fix non-deterministic behavior leading to fatal cache misses in tests --- examples/delegation_crewai.py | 123 +++++----- examples/single_llama_index.py | 14 +- examples/single_openai_tools_react.py | 68 +++--- .../caching/__init__.py | 0 .../caching/caching.py | 12 +- .../caching/http_cache.py | 21 +- .../utils.py" => motleycrew/caching/utils.py | 0 motleycrew/common/exceptions.py | 10 + motleycrew/crew.py | 9 +- motleycrew/tasks/task.py | 8 +- motleycrew/tracking/utils.py | 13 +- ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 7696 -> 0 bytes ...11b0a31aaf8a195b8285230d592a899124ca1e.pkl | Bin 17025 -> 0 bytes ...519c7d1aaf8a195b8285230d592a899124ca1e.pkl | Bin 28069 -> 0 bytes tests/data/single_llama_index_test.txt | 30 --- ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 6777 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 368625 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 7333 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 100879 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 2798 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 133101 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 2837 bytes ...c07d0a1aaf8a195b8285230d592a899124ca1e.pkl | Bin 0 -> 17723 bytes ...7f29fb1aaf8a195b8285230d592a899124ca1e.pkl | Bin 0 -> 17960 bytes ...d6f4491aaf8a195b8285230d592a899124ca1e.pkl | Bin 0 -> 28698 bytes ...ac90ce1aaf8a195b8285230d592a899124ca1e.pkl | Bin 0 -> 28937 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 0 -> 7844 bytes ...f8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl | Bin 3848 -> 3848 bytes ...11b0a31aaf8a195b8285230d592a899124ca1e.pkl | Bin 0 -> 18448 bytes ...6409f71aaf8a195b8285230d592a899124ca1e.pkl | Bin 0 -> 29586 bytes .../itest_golden_data/delegation_crewai.json | 1 + .../itest_golden_data/single_llama_index.json | 1 + tests/run_integration_tests.py | 216 +++++++++++------- tests/test_caching/test_http_cache.py | 4 +- 34 files changed, 275 insertions(+), 255 deletions(-) rename "motleycrew/ca\321\201hing/__init__.py" => motleycrew/caching/__init__.py (100%) rename "motleycrew/ca\321\201hing/caching.py" => motleycrew/caching/caching.py (71%) rename "motleycrew/ca\321\201hing/http_cache.py" => motleycrew/caching/http_cache.py (96%) rename "motleycrew/ca\321\201hing/utils.py" => motleycrew/caching/utils.py (100%) delete mode 100644 tests/cache/api.openai.com/v1_chat_completions/84c649846dd264e0b73fecfab8a4a9b5d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl delete mode 100644 tests/cache/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebecb4c1c84a6f853639e9161893c511b0a31aaf8a195b8285230d592a899124ca1e.pkl delete mode 100644 tests/cache/links.duckduckgo.com/d.js/0ec71190039321d8b6c7404990533b86168fc063272c18992e4eb0016b519c7d1aaf8a195b8285230d592a899124ca1e.pkl delete mode 100644 tests/data/single_llama_index_test.txt create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/4a264628c775d4db62ba8ce634ffd0a2d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/78811c187a22b55fa5b7e522a71aa36bd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/b39ddaa72db8b64f5c85a09bb8a4e259d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/b414050ebc88bff2c657da5a257ffe1dd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/c4cc0cd6c3ec4ff77e1a234ae4c2fc07d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/cfae648e42e0a9e385fc6f0541c91d97d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/d2b1db6240390c1234c4f08da46774fdd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl create mode 100644 tests/itest_cache/delegation_crewai/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebec8358fbe3cb4f93d2ec0f9d703bc07d0a1aaf8a195b8285230d592a899124ca1e.pkl create mode 100644 tests/itest_cache/delegation_crewai/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebecb249a43ee5f64346d467b2ff847f29fb1aaf8a195b8285230d592a899124ca1e.pkl create mode 100644 tests/itest_cache/delegation_crewai/links.duckduckgo.com/d.js/0ec71190039321d8b6c7404990533b869e74eb42d6d87692e2bee63ef6d6f4491aaf8a195b8285230d592a899124ca1e.pkl create mode 100644 tests/itest_cache/delegation_crewai/links.duckduckgo.com/d.js/0ec71190039321d8b6c7404990533b86b5b07045df3b4c5a78eb37ef17ac90ce1aaf8a195b8285230d592a899124ca1e.pkl create mode 100644 tests/itest_cache/single_llama_index/api.openai.com/v1_chat_completions/885bd7f13b815fd63043d9465b4288dbd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl rename tests/{cache => itest_cache/single_llama_index}/api.openai.com/v1_chat_completions/9a9f10525ef474effb9fbd57e1af29eed41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl (96%) create mode 100644 tests/itest_cache/single_llama_index/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebecb4c1c84a6f853639e9161893c511b0a31aaf8a195b8285230d592a899124ca1e.pkl create mode 100644 tests/itest_cache/single_llama_index/links.duckduckgo.com/d.js/0ec71190039321d8b6c7404990533b864c0e0b6cf95a194abbec95dc2a6409f71aaf8a195b8285230d592a899124ca1e.pkl create mode 100644 tests/itest_golden_data/delegation_crewai.json create mode 100644 tests/itest_golden_data/single_llama_index.json diff --git a/examples/delegation_crewai.py b/examples/delegation_crewai.py index 994ebdb5..38eb71cf 100644 --- a/examples/delegation_crewai.py +++ b/examples/delegation_crewai.py @@ -3,70 +3,81 @@ from motleycrew import MotleyCrew, Task from motleycrew.agent.crewai import CrewAIMotleyAgent +from motleycrew.common.utils import configure_logging -load_dotenv() -search_tool = DuckDuckGoSearchRun() +def main(): + search_tool = DuckDuckGoSearchRun() -researcher = CrewAIMotleyAgent( - role="Senior Research Analyst", - goal="Uncover cutting-edge developments in AI and data science", - backstory="""You work at a leading tech think tank. -Your expertise lies in identifying emerging trends. -You have a knack for dissecting complex data and presenting actionable insights.""", - verbose=True, - delegation=False, - tools=[search_tool], -) + researcher = CrewAIMotleyAgent( + role="Senior Research Analyst", + goal="Uncover cutting-edge developments in AI and data science", + backstory="""You work at a leading tech think tank. + Your expertise lies in identifying emerging trends. + You have a knack for dissecting complex data and presenting actionable insights.""", + verbose=True, + delegation=False, + tools=[search_tool], + ) -writer = CrewAIMotleyAgent( - role="Tech Content Strategist", - goal="Craft compelling content on tech advancements", - backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles. -You transform complex concepts into compelling narratives.""", - verbose=True, - delegation=True, -) + writer = CrewAIMotleyAgent( + role="Tech Content Strategist", + goal="Craft compelling content on tech advancements", + backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles. + You transform complex concepts into compelling narratives.""", + verbose=True, + delegation=True, + ) -# Create tasks for your agents -crew = MotleyCrew() -task1 = Task( - crew=crew, - name="produce comprehensive analysis report on AI advancements", - description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024. -Identify key trends, breakthrough technologies, and potential industry impacts. -Your final answer MUST be a full analysis report""", - agent=researcher, - documents=["paper1.pdf", "paper2.pdf"], # will be ignored for now -) + # Create tasks for your agents + crew = MotleyCrew() + task1 = Task( + crew=crew, + name="produce comprehensive analysis report on AI advancements", + description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024. + Identify key trends, breakthrough technologies, and potential industry impacts. + Your final answer MUST be a full analysis report""", + agent=researcher, + documents=["paper1.pdf", "paper2.pdf"], # will be ignored for now + ) -task2 = Task( - crew=crew, - name="provide a literature summary of recent papers on AI", - description="""Conduct a comprehensive literature review of the latest advancements in AI in 2024. -Identify key papers, researchers, and companies in the space. -Your final answer MUST be a full literature review with citations""", - agent=researcher, -) + task2 = Task( + crew=crew, + name="provide a literature summary of recent papers on AI", + description="""Conduct a comprehensive literature review of the latest advancements in AI in 2024. + Identify key papers, researchers, and companies in the space. + Your final answer MUST be a full literature review with citations""", + agent=researcher, + ) + task3 = Task( + crew=crew, + name="produce blog post on AI advancements", + description="""Using the insights provided by a thorough web search, develop an engaging blog + post that highlights the most significant AI advancements. + Your post should be informative yet accessible, catering to a tech-savvy audience. + Make it sound cool, avoid complex words so it doesn't sound like AI. + Create a blog post of at least 4 paragraphs.""", + agent=writer, + ) -task3 = Task( - crew=crew, - name="produce blog post on AI advancements", - description="""Using the insights provided by a thorough web search, develop an engaging blog -post that highlights the most significant AI advancements. -Your post should be informative yet accessible, catering to a tech-savvy audience. -Make it sound cool, avoid complex words so it doesn't sound like AI. -Create a blog post of at least 4 paragraphs.""", - agent=writer, -) + [task1, task2] >> task3 -[task1, task2] >> task3 + # Get your crew to work! + result = crew.run( + agents=[researcher, writer], + verbose=2, # You can set it to 1 or 2 to different logging levels + ) -# Get your crew to work! -result = crew.run( - agents=[researcher, writer], - verbose=2, # You can set it to 1 or 2 to different logging levels -) + # Get the outputs of the task + for output in task3.outputs: + print(output) -print(list(result._done)[0].outputs) + return task3.outputs + + +if __name__ == "__main__": + configure_logging(verbose=True) + + load_dotenv() + main() diff --git a/examples/single_llama_index.py b/examples/single_llama_index.py index 47f7f405..314f775c 100644 --- a/examples/single_llama_index.py +++ b/examples/single_llama_index.py @@ -4,7 +4,6 @@ from motleycrew import MotleyCrew, Task from motleycrew.agent.llama_index import ReActLlamaIndexMotleyAgent -from motleycrew.caсhing import enable_cache, disable_cache from motleycrew.common.utils import configure_logging @@ -19,7 +18,6 @@ def main(): verbose=True, ) - crew = MotleyCrew() # Create tasks for your agents @@ -33,24 +31,20 @@ def main(): documents=["paper1.pdf", "paper2.pdf"], ) - # Instantiate your crew with a sequential process + # Get your crew to work! result = crew.run( agents=[researcher], verbose=2, # You can set it to 1 or 2 to different logging levels ) - # Get your crew to work! - outputs = list(result._done)[0].outputs + outputs = task1.outputs print(outputs) - print("######################") - return outputs[0].response + return [output.response for output in outputs] -if __name__ == '__main__': +if __name__ == "__main__": configure_logging(verbose=True) load_dotenv() - enable_cache() main() - disable_cache() diff --git a/examples/single_openai_tools_react.py b/examples/single_openai_tools_react.py index 7be621b3..06115072 100644 --- a/examples/single_openai_tools_react.py +++ b/examples/single_openai_tools_react.py @@ -4,48 +4,48 @@ from motleycrew import MotleyCrew, Task from motleycrew.agent.langchain.openai_tools_react import ReactOpenAIToolsAgent from motleycrew.agent.langchain.react import ReactMotleyAgent +from motleycrew.common.utils import configure_logging -# # You can delete this block if you don't want to use Langsmith -# from langsmith import Client -# -# unique_id = uuid4().hex[0:8] -# os.environ["LANGCHAIN_TRACING_V2"] = "true" -# os.environ["LANGCHAIN_PROJECT"] = f"Tracing Walkthrough - {unique_id}" -# os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com" -# os.environ["LANGCHAIN_API_KEY"] = credentials["LANGCHAIN_API_KEY"] -# -# client = Client() -# # End of Langsmith block -load_dotenv() +def main(): + search_tool = DuckDuckGoSearchRun() -search_tool = DuckDuckGoSearchRun() + tools = [search_tool] + researcher = ReactOpenAIToolsAgent(tools=tools, verbose=True) + researcher2 = ReactMotleyAgent(tools=tools, verbose=True) -tools = [search_tool] + outputs = [] + for r in [researcher, researcher2]: + crew = MotleyCrew() + task = Task( + crew=crew, + name="produce comprehensive analysis report on AI advancements", + description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024. + Identify key trends, breakthrough technologies, and potential industry impacts. + Your final answer MUST be a full analysis report""", + agent=r, + documents=["paper1.pdf", "paper2.pdf"], # will be ignored for now + ) + result = crew.run( + agents=[r], + verbose=2, # You can set it to 1 or 2 to different logging levels + ) -researcher = ReactOpenAIToolsAgent(tools=tools, verbose=True) -researcher2 = ReactMotleyAgent(tools=tools, verbose=True) + # Get your crew to work! + print(task.outputs) + outputs += task.outputs -for r in [researcher, researcher2]: + return outputs - crew = MotleyCrew() - task1 = Task( - crew=crew, - name="produce comprehensive analysis report on AI advancements", - description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024. - Identify key trends, breakthrough technologies, and potential industry impacts. - Your final answer MUST be a full analysis report""", - agent=r, - documents=["paper1.pdf", "paper2.pdf"], # will be ignored for now - ) - result = crew.run( - agents=[r], - verbose=2, # You can set it to 1 or 2 to different logging levels - ) - # Get your crew to work! - print(list(result._done)[0].outputs) +if __name__ == "__main__": + from motleycrew.caching import enable_cache, set_cache_location, set_strong_cache -print("######################") + configure_logging(verbose=True) + + load_dotenv() + enable_cache() + set_strong_cache(False) + main() diff --git "a/motleycrew/ca\321\201hing/__init__.py" b/motleycrew/caching/__init__.py similarity index 100% rename from "motleycrew/ca\321\201hing/__init__.py" rename to motleycrew/caching/__init__.py diff --git "a/motleycrew/ca\321\201hing/caching.py" b/motleycrew/caching/caching.py similarity index 71% rename from "motleycrew/ca\321\201hing/caching.py" rename to motleycrew/caching/caching.py index dc36dd64..e779233b 100644 --- "a/motleycrew/ca\321\201hing/caching.py" +++ b/motleycrew/caching/caching.py @@ -1,6 +1,6 @@ import os -from motleycrew.caсhing.http_cache import ( +from motleycrew.caching.http_cache import ( BaseHttpCache, RequestsHttpCaching, HttpxHttpCaching, @@ -16,23 +16,23 @@ def set_strong_cache(val: bool): - """Enabling disabling the strictly caching option""" + """Enable or disable the strict-caching option""" BaseHttpCache.strong_cache = bool(val) def set_update_cache_if_exists(val: bool): - """Enabling disabling cache updates""" + """Enable or disable cache updates""" BaseHttpCache.update_cache_if_exists = bool(val) def set_cache_location(location: str) -> str: - """Sets the caching root directory, returns the absolute path of the derrictory""" + """Set the caching root directory, return the absolute path of the directory""" BaseHttpCache.root_cache_dir = location return os.path.abspath(BaseHttpCache.root_cache_dir) def enable_cache(): - """The function of enable the caching process""" + """Enable global caching""" global is_caching for http_cache in caching_http_library_list: http_cache.enable() @@ -40,7 +40,7 @@ def enable_cache(): def disable_cache(): - """The function of disable the caching process""" + """Disable global caching""" global is_caching for http_cache in caching_http_library_list: http_cache.disable() diff --git "a/motleycrew/ca\321\201hing/http_cache.py" b/motleycrew/caching/http_cache.py similarity index 96% rename from "motleycrew/ca\321\201hing/http_cache.py" rename to motleycrew/caching/http_cache.py index 0296a1fa..2f6d6ab4 100644 --- "a/motleycrew/ca\321\201hing/http_cache.py" +++ b/motleycrew/caching/http_cache.py @@ -32,9 +32,6 @@ class StrongCacheException(BaseException): """Exception use of cache only""" -load_dotenv() - - def file_cache(http_cache: "BaseHttpCache", updating_parameters: dict = {}): """Decorator to cache function output based on its inputs, ignoring specified parameters.""" @@ -90,18 +87,14 @@ def enable(self): """Enable caching""" self._enable() self.is_caching = True - library_log = ( - "for {} library.".format(self.library_name) if self.library_name else "." - ) + library_log = "for {} library.".format(self.library_name) if self.library_name else "." logging.info("Enable caching {} class {}".format(self.__class__, library_log)) def disable(self): """Disable caching""" self._disable() self.is_caching = False - library_log = ( - "for {} library.".format(self.library_name) if self.library_name else "." - ) + library_log = "for {} library.".format(self.library_name) if self.library_name else "." logging.info("Disable caching {} class {}".format(self.__class__, library_log)) def prepare_response(self, response: Any) -> Any: @@ -130,11 +123,7 @@ def get_cache_file(self, func: Callable, *args, **kwargs) -> Union[tuple, None]: # check or create cache dirs root_dir = Path(self.root_cache_dir) - cache_dir = ( - root_dir - / url_parsed.hostname - / url_parsed.path.strip("/").replace("/", "_") - ) + cache_dir = root_dir / url_parsed.hostname / url_parsed.path.strip("/").replace("/", "_") cache_dir.mkdir(parents=True, exist_ok=True) # Convert args to a dictionary based on the function's signature @@ -214,9 +203,7 @@ def read_from_cache(self, cache_file: Path, url: str = "") -> Union[Any, None]: except Exception as e: logging.warning("Unpickling failed for {}".format(cache_file)) if self.strong_cache: - msg = "Error reading cached file: {}\n{}".format( - str(e), str(cache_file) - ) + msg = "Error reading cached file: {}\n{}".format(str(e), str(cache_file)) raise StrongCacheException(msg) return None diff --git "a/motleycrew/ca\321\201hing/utils.py" b/motleycrew/caching/utils.py similarity index 100% rename from "motleycrew/ca\321\201hing/utils.py" rename to motleycrew/caching/utils.py diff --git a/motleycrew/common/exceptions.py b/motleycrew/common/exceptions.py index e132f4cd..6ead1bf5 100644 --- a/motleycrew/common/exceptions.py +++ b/motleycrew/common/exceptions.py @@ -31,3 +31,13 @@ def __str__(self) -> str: return "Cannot modify agent{} as it is already materialized".format( f" `{self.agent_name}`" if self.agent_name is not None else "" ) + + +class IntegrationTestException(Exception): + """Integration tests exception""" + + def __init__(self, test_names: list[str]): + self.test_names = test_names + + def __str__(self): + return "Some integration tests failed: {}".format(self.test_names) diff --git a/motleycrew/crew.py b/motleycrew/crew.py index c8207e97..11c4a181 100644 --- a/motleycrew/crew.py +++ b/motleycrew/crew.py @@ -113,17 +113,14 @@ def assign_agent(self, task: Task) -> MotleyAgentParent: agent = task.agent else: agent = spawn_agent(task) + tools = self.get_agent_tools(agent, task) + agent.add_tools(tools) logging.info("Assigning task '%s' to agent '%s'", task.name, agent.name) - tools = self.get_agent_tools(agent, task) - agent.add_tools(tools) - return agent - def get_agent_tools( - self, agent: MotleyAgentParent, task: Task - ) -> Sequence[BaseTool]: + def get_agent_tools(self, agent: MotleyAgentParent, task: Task) -> Sequence[BaseTool]: # Task is needed later when we do smart tool selection # TODO: Smart tool selection goes here # Add the agents as tools to each other for delegation diff --git a/motleycrew/tasks/task.py b/motleycrew/tasks/task.py index f2c3ef03..dfda44cd 100644 --- a/motleycrew/tasks/task.py +++ b/motleycrew/tasks/task.py @@ -47,8 +47,8 @@ def __init__( self.done: bool = False - self.upstream_tasks: Set[Task] = set() - self.downstream_tasks: Set[Task] = set() + self.upstream_tasks: list[Task] = list() + self.downstream_tasks: list[Task] = list() self.crew.add_task(self) @@ -84,8 +84,8 @@ def set_upstream(self, task: Task) -> Task: if task is self: raise TaskDependencyCycleError(f"Task {task.name} can not depend on itself") - self.upstream_tasks.add(task) - task.downstream_tasks.add(self) + self.upstream_tasks.append(task) + task.downstream_tasks.append(self) return self diff --git a/motleycrew/tracking/utils.py b/motleycrew/tracking/utils.py index 0c85ded6..38e8ae85 100644 --- a/motleycrew/tracking/utils.py +++ b/motleycrew/tracking/utils.py @@ -12,11 +12,14 @@ def get_lunary_public_key(): """Return lunary public key or None""" - return ( + key = ( os.environ.get("LUNARY_PUBLIC_KEY") or os.getenv("LUNARY_APP_ID") or os.getenv("LLMONITOR_APP_ID") ) + if not key: + logging.warning("Lunary public key is not set, tracking will be disabled") + return key def create_lunary_callback() -> LunaryCallbackHandler: @@ -66,9 +69,7 @@ def get_default_callbacks_list( if callable(dc_factory): _default_callbacks = dc_factory() else: - msg = "Default callbacks are not implemented for {} framework".format( - framework_name - ) + msg = "Default callbacks are not implemented for {} framework".format(framework_name) logging.warning(msg) return _default_callbacks @@ -104,6 +105,6 @@ def add_default_callbacks_to_langchain_config( _default_callbacks = get_default_callbacks_list() if _default_callbacks: - config_callbacks = config.get("tracking") or [] - config["tracking"] = combine_callbacks(config_callbacks, _default_callbacks) + config_callbacks = config.get("callbacks") or [] + config["callbacks"] = combine_callbacks(config_callbacks, _default_callbacks) return config diff --git a/tests/cache/api.openai.com/v1_chat_completions/84c649846dd264e0b73fecfab8a4a9b5d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/cache/api.openai.com/v1_chat_completions/84c649846dd264e0b73fecfab8a4a9b5d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl deleted file mode 100644 index 3d86cdd853e7587ef06a91b284fdd88cee54099f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7696 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

&O0`K~fzg*X_UkJJ;ho_3Liu&hYxlOZU!NwXwS1 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 diff --git a/tests/data/single_llama_index_test.txt b/tests/data/single_llama_index_test.txt deleted file mode 100644 index 7940b69b..00000000 --- a/tests/data/single_llama_index_test.txt +++ /dev/null @@ -1,30 +0,0 @@ -**AI Advancements in 2024: Comprehensive Analysis Report** - -**1. Realistic Expectations:** - - The AI industry is moving towards setting more realistic expectations for technology deployment and capabilities, focusing on achievable goals and transparent communication. - -**2. Multimodal AI:** - - Advancements in multimodal AI, which integrates and processes multiple types of data (e.g., text, images, sound), are expected to enhance AI's understanding and interaction capabilities. - -**3. Smaller Language Models and Open Source Advancements:** - - There is a shift towards developing smaller, more efficient language models that are easier to deploy and maintain. Open source projects are playing a crucial role in democratizing AI technology, making it accessible to a broader audience. - -**4. GPU Shortages and Cloud Costs:** - - The AI industry may face challenges such as GPU shortages and rising cloud computing costs, which could affect the development and deployment of AI models. - -**5. Model Optimization:** - - Techniques for optimizing AI models are becoming more accessible, allowing for better performance with lower resource consumption. - -**6. Customized Local Models and Data Pipelines:** - - There is a growing trend towards developing customized AI models and data pipelines tailored to specific local needs, enhancing efficiency and relevance. - -**7. Generative AI:** - - Generative AI is expected to become increasingly useful to the general public, not just tech enthusiasts. This technology will enable users to create customized content and solutions, potentially transforming various industries. - -**8. Industry Impact:** - - The widespread adoption of generative AI is poised to trigger a significant transformation across the global economic landscape. Businesses are beginning to realize the broad potential of AI to innovate and streamline operations. - -**9. Key Technologies:** - - According to MIT Technology Review, generative AI is among the top technologies that have the potential to significantly change our lives in the coming years. - -This report highlights the key trends and breakthrough technologies in AI for 2024, underscoring the industry's evolution and its potential impacts on various sectors. As AI continues to advance, it is crucial for businesses and individuals to stay informed and adapt to these changes to leverage the opportunities they present. \ No newline at end of file diff --git a/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/4a264628c775d4db62ba8ce634ffd0a2d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/4a264628c775d4db62ba8ce634ffd0a2d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ce071404fe8fce01cb3aa7bae45e12ec25763dca GIT binary patch literal 6777 zcmeHLO>Z1U5M2=*90vl5;KHdhmjr3Ov4a!iy*VEShDdajo#=j(&Iy3`{L z8>NT!cG<7ydzQX03Fp{uXY&2b?qW_pHA!8)|K#!0-MYF^+Kg9Tc((KK6iaobS6T%> z1G4Zagbpb)MGlt%@%m=iC2Z$n#d+PF0E}aBE4&epw;#R$1q7^FW{yHk z#$>K7HbpG80NcXoY|LvMwI{z3q8DD})MboG8ISliG`)uSu2>gGRu;gGyqFT9-p6@< zeQl5>PEJQWb2KQkK+;i4T8xn+O_VS!sofEbgQ{6LLiSDR5v~Q{ULa7!*b$q$z)_c) zGD}3CiJxR1hISkX+%*BSgjbUxs7KG9?uH{AG#!KYsnC(IT>22y%azj4kf}+0X{1si20bISa=Ru06gB1 z6OotB2h1T8yj6gL92n#jVKzmHGJ&8_os5LT<5dUyI)t*X!NgEOo%vV{6su`M^5%75 z;ynKwMmB=wdPooUgD*duMzPTPWYjgp*HDI>z#+#rxiKY-+>Q49^rEJgP@1^jNR z0Ix|7lnF<#Oy5E8XgG-j2}1d6ti*d0ee6m%>WX`YrO5@)TUvt191|czTTn1;Xv(BV z^As{cQeu?$dHJC1Z!O(g0mIxFHYXiGj0p7*D!(oImgLB%Q27wO1Pw)-%nZ>p+9C0U z;f|)bYyrl3I~FQ0pt`B1Vc%sUC^U!}<-u9vCI+;Y3S&KoDee-w&o!}|;xL}iAMCtf zw>ZtRLj9nY+WcmjslOp=Uq>egXrehLPsS~DSop=2MPJ&!;pVDwY#E=DZr*rfp0&j4xxyJi)Fi*K53B_-R+> zl+-_0pCmMp(C_(ptL92SSp2H4KI`c+@Ab#XR4*|{Iy0D*N&V>URg6E%Wa03unn$n0 zq{%U@F7XF~^AfXatF`ssw|D-SYyDL3)amuRZ?Cpm+!njyb)=H08}XouF{T#Rw#+yk z*!71$s3%fB*ch(e?wgIZ@9y1MdA<>~Bh!BcwNET~)J;ZPCr(Q}!h#sopcdM;fmDTns&C@I|valAH@LYqH!lQbj-i=pB4}cAc{5`pu+g6J z&~(lH*}p4XU01A literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/78811c187a22b55fa5b7e522a71aa36bd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/78811c187a22b55fa5b7e522a71aa36bd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f75a0f9b4de6f12804677fa9a063ada70f4b11cc GIT binary patch literal 368625 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 Q-uuVDd?)^MJ+DvxH#pCENB{r; literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/b39ddaa72db8b64f5c85a09bb8a4e259d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/b39ddaa72db8b64f5c85a09bb8a4e259d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1e731c9e50644bb04a9136e2aa667cb75c7f0bce GIT binary patch literal 7333 zcmeHM%WfP+6djQ`I1U7a!j46yHwn^sVh4kh**Oou_>ssDBx75Xn(jN(m8q_3s;WJn zM3%@37QLg{@IMGXgP+KrQ`O@~L?l>4k32Iy)m697J@?#uyW2m^{POE3t?(*mQs?sH zs+`>-n`>pM`nme_RdrI`F0Wa~U158%PN-V@qkK0do{+Is+A81udU|{|d!{Fab=6^2 zUhR>>8li^OX3;NadxpL*2CvF zw0I{@xx0hkxg;mxd$qags#lfmr&rS1nuPS)VU@mLyAf;UNV)34Z!@jd%P1pj`H*bX zW&1B9qb1=eDlD0(&7$dKKeVR{#tpG;QbHRBh{R2tvK7VU#JbLb@-xQTj2L%}GYM)z z9&?0AE){CT99JXEV|Zb%VRW36al#Ulf-Dn?i3HHZVB!~2MrIf+fUU%yFJvh{BJ40y zJRY$Dz$C(2ik+Wa6LHKE?l|KrVYvZP7{xh`DO&NqBK)0B#tdSe%q>sPQ3e zm+d0{M`T!BIKO9Ac(gF*(9#wjT_L5vhp;$d-R$5~8Ob5$`k|gZB%rBVZYK!Kr7@o*gJaWII^b z4HQi+jJZuu2nyNhk$Cs~tiuBpTscr+Vkn@_Y{CY@t7%H| z>MdaMasD@qd>K}*gz#WL*z%bYJB00`(KhqCMoLbz)FZ;&Ov90BJ%Hpcq8MtVS&Hg& z3i!=X0bU&(C=-UB>%N8FQE(Cq5}0r|y%HZz^|8b4sLLK|FHN8DeoI3Tne_xn;mDxy z0-m8GLE}@tBzLHyj3)$~YWol48G8$12P!%_L@~|Kfut{`!`#g;&4Zi1_C;1l!1%DECv@k3nvxY(|d}J-C2v;M3+Mw(`Mp3*+;_mYAa}h$`%u+M#oI5jn_BO21)YV;#WC~num^) zp=(|BUvSQG^sKek+B@I;`TOP8kJVO{-g@x*Myut^W0$>*L=tr)->_n|tNHtDdXj$k zV&}#3_Ii@vyF2PXe7xS@qmA|DdmB+Z(*5U9{d9$IdD9lxiPJ)jFd+st$cm`DxV*Tu zymbHbrRDZ1%@d!o z=!!xmbR2aT+EMT^>Yg^rh+7Mup##67Zmh5sowOsVhq*xlMO_7@wIl2%Y>EhRbeVea z1|HKMqtBV zLpB!`xV8#+qYW296iq9|-6J%?>U+vY6*U_xs|^!16Bi#cG@R6&G&}?z@I;_tA~3Pk z@K9%l#WNqtjhr-u)P!*Sb0(H}2=+g|^!#Vn>*ux?9_H;odb0WWaBdFIWjlWXwI!tQ literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/b414050ebc88bff2c657da5a257ffe1dd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/b414050ebc88bff2c657da5a257ffe1dd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl new file mode 100644 index 0000000000000000000000000000000000000000..809aa1e0e9f53ee42fd0ae178d8c4b8a766a94c8 GIT binary patch literal 100879 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 pb!ip0J;ISi!Mnnz`~{{>O!q%Hse literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/cfae648e42e0a9e385fc6f0541c91d97d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/cfae648e42e0a9e385fc6f0541c91d97d41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1cf00bb586102472ef6d293b80fd13d56880b9e5 GIT binary patch literal 133101 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 JZHM{ne*p8Yy3_yw literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/d2b1db6240390c1234c4f08da46774fdd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl b/tests/itest_cache/delegation_crewai/api.openai.com/v1_chat_completions/d2b1db6240390c1234c4f08da46774fdd41d8cd98f00b204e9800998ecf8427ef6bfa7aa5512fbf52a0935a74f6edf99.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c022d262f7b12c9870f6d9ca0f0991a6417d997b GIT binary patch literal 2837 zcmbtW&u<$=6b_WoHi3c=+(+9(TFG$}*R7k}(iVl1HYsUyKsefrcgNms#xu*zY!WN7 zL{D(o8_WO1U%-tEe+l24-L>6N2_dXFo}GE`&G)|dYkyk)ZDn=Ie~RVAx$L4WZX61m zX=O$EYkBu=IW6xLtJZOs+c46xDEEFZt|x-W!q_rdDz1N1uV>QBp-inSkIUj_C=_&3 zH7fV>L2)BA;>TRzjPwrc^-S;Mv2clw%i^P#2d`e2#kJf>lDu|w_`JbV+zNA(!p=|_ z*cN5+nTOrRw#>Kz>SFaJ{lbe}I_TZ0JhNr7R2H{*mbP^!6i?fc9+&&Ym-o&#??nlB z_wbxa;Zpcs?(e(uZD|L|$H|R~gk<%&Og^pLh_rG-x$^N}%S%g_!B|+!N5Tf%?1#(1 zXeqD?aw|;GVnHoTTL(%`nA2KX#?N>v`9O;8zPf$;c3-{5HrwZ8vCZN81Z z=1L-Fh0Be?m1kV0F|$!3#@u`3 z65)Alv1Y{-sAJ>YIzlNfc;vt}QjANcm0)`4MYU(owiu#=jnpzHE*ybL6=)iJq3SxF zd(Zu)2vT2xO-50AZ-6{c+e~tY{AN4P7?00564bN8IvbrX;n$KIz~aWGkreji{LuFkgt2HLLz9J z-Du%S75I%vYa4wjFeQ&d_-T!G0#uieZu6?3WPE{&iID@1_ z@twRE%L$u>fFetsGBuD!Q-cc*-L?{lDvOMuT5@+T;2Fsb+8grAw<8eLgvlRXK}VV8 z>!z*_5~f-}1w~*;#BI-c>Z*=L%=s4OcWdTBt7j5OW0NNorj1RrBUDvM4Sm%kLB$70Aag61=@SkB#W z{ZUzb6{>t34kqXoVXV)U)EK96`QpzHFe8QJ87dBgI7TyZ=@=vJCjFoy9LGT0TiW~Z zh5qB`@~}+S9)EicBWQ)OAdTT$K$9#&m9B5?>B*aeUH+o`@Vi7s-NWR;_ZOWfd^daE zn*=S=sC}%pXdc${uR4z45%LvQH+!4iUU%z3cgyR&uQ=DK#jS7PZ>!e!Me6GccQHm7 z=@X1nk(nc)*ADfO6k)Wf|gHr%H8?JmCD?*zp^F^ zf}u>r&RHiPjgB^4Z*$N)+TDB^b!>0pKCjYb#;m=}ul47%{Y5vb%m1Ydy=w?w%yOL~ zdZpL)gMYpr1g&>FE>!#wMoaAn|7|4oQ7%CpmgIyr%#0VBVjVMEJsj=St$5JG3ae<+}{dTrYk7*_TS7gvitx5 literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebec8358fbe3cb4f93d2ec0f9d703bc07d0a1aaf8a195b8285230d592a899124ca1e.pkl b/tests/itest_cache/delegation_crewai/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebec8358fbe3cb4f93d2ec0f9d703bc07d0a1aaf8a195b8285230d592a899124ca1e.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f7474f822cd0c1cb298993208bc421458eb69b89 GIT binary patch literal 17723 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 literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebecb249a43ee5f64346d467b2ff847f29fb1aaf8a195b8285230d592a899124ca1e.pkl b/tests/itest_cache/delegation_crewai/duckduckgo.com/25557515d9cb6a2ff7f04e0c9186ebecb249a43ee5f64346d467b2ff847f29fb1aaf8a195b8285230d592a899124ca1e.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a97a73a79f5bedce687537aec71763f46585cb21 GIT binary patch literal 17960 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 literal 0 HcmV?d00001 diff --git a/tests/itest_cache/delegation_crewai/links.duckduckgo.com/d.js/0ec71190039321d8b6c7404990533b869e74eb42d6d87692e2bee63ef6d6f4491aaf8a195b8285230d592a899124ca1e.pkl b/tests/itest_cache/delegation_crewai/links.duckduckgo.com/d.js/0ec71190039321d8b6c7404990533b869e74eb42d6d87692e2bee63ef6d6f4491aaf8a195b8285230d592a899124ca1e.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e27f239dcfb04ba5b632bba9731b68343734d093 GIT binary patch literal 28698 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