From 50b603d3d2e4b33628e3565f7d50449657f08bda Mon Sep 17 00:00:00 2001 From: Lucas Gomide Date: Thu, 24 Apr 2025 12:11:38 -0300 Subject: [PATCH] feat: support to define a task guardrail using YAML config --- docs/concepts/tasks.mdx | 23 + src/crewai/project/crew_base.py | 3 + .../test_after_kickoff_modification.yaml | 563 +++++++++++++++++ .../test_before_kickoff_modification.yaml | 581 ++++++++++++++++++ .../test_before_kickoff_with_none_input.yaml | 571 +++++++++++++++++ .../test_multiple_before_after_kickoff.yaml | 580 +++++++++++++++++ tests/config/tasks.yaml | 1 + tests/project_test.py | 32 +- 8 files changed, 2350 insertions(+), 4 deletions(-) diff --git a/docs/concepts/tasks.mdx b/docs/concepts/tasks.mdx index 3e5dfcc2e..8b4c9478d 100644 --- a/docs/concepts/tasks.mdx +++ b/docs/concepts/tasks.mdx @@ -791,6 +791,29 @@ task = Task( ) ``` +##### Using YAML + +```yaml +research_task: + ... + guardrail: make sure each bullet contains a minimum of 100 words + ... +``` + +```python Code +@CrewBase +class InternalCrew: + agents_config = "config/agents.yaml" + tasks_config = "config/tasks.yaml" + + ... + @task + def research_task(self): + return Task(config=self.tasks_config["research_task"]) # type: ignore[index] + ... +``` + + #### Use custom models for code generation ```python Code diff --git a/src/crewai/project/crew_base.py b/src/crewai/project/crew_base.py index 385e49f3d..74384b9f1 100644 --- a/src/crewai/project/crew_base.py +++ b/src/crewai/project/crew_base.py @@ -248,6 +248,9 @@ def CrewBase(cls: T) -> T: callback_functions[callback]() for callback in callbacks ] + if guardrail := task_info.get("guardrail"): + self.tasks_config[task_name]["guardrail"] = guardrail + # Include base class (qual)name in the wrapper class (qual)name. WrappedClass.__name__ = CrewBase.__name__ + "(" + cls.__name__ + ")" WrappedClass.__qualname__ = CrewBase.__qualname__ + "(" + cls.__name__ + ")" diff --git a/tests/cassettes/test_after_kickoff_modification.yaml b/tests/cassettes/test_after_kickoff_modification.yaml index bf63b910d..2a7997fba 100644 --- a/tests/cassettes/test_after_kickoff_modification.yaml +++ b/tests/cassettes/test_after_kickoff_modification.yaml @@ -484,4 +484,567 @@ interactions: - req_32b801874a2fed46b91251052364ec47 http_version: HTTP/1.1 status_code: 200 +- request: + body: !!binary | + CvIRCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSyREKEgoQY3Jld2FpLnRl + bGVtZXRyeRKvDQoQ4gC2lbRpGeu8gf2D60BS3hIIhU9d+sJ7dCcqDENyZXcgQ3JlYXRlZDABOQik + 3WUFljkYQbA66mUFljkYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTE0LjBKGgoOcHl0aG9uX3Zl + cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokMDBkNDhiZTItZDhlZS00MzUxLWJlZjQtZmE0YTI0NDA5Njgz + ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3 + X251bWJlcl9vZl90YXNrcxICGAJKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAko6ChBjcmV3 + X2ZpbmdlcnByaW50EiYKJGY1OTAxZDRjLTI3NmYtNGUzMy1hNzM4LTg5Y2E5Zjg2ZDMwMUo7Chtj + cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyODowMC41MDg3NjZK + zwUKC2NyZXdfYWdlbnRzEr8FCrwFW3sia2V5IjogIjczYzM0OWM5M2MxNjNiNWQ0ZGY5OGE2NGZh + YzFjNDMwIiwgImlkIjogImFjMGJjYmU0LTM0MDktNGVlZi04NWFhLTUzYmYyNzlkMjIxNiIsICJy + b2xlIjogInt0b3BpY30gU2VuaW9yIERhdGEgUmVzZWFyY2hlclxuIiwgInZlcmJvc2U/IjogdHJ1 + ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2NhbGxpbmdfbGxt + IjogIm9wZW5haS9tb2RlbF9uYW1lIiwgImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9u + X2VuYWJsZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9y + ZXRyeV9saW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfSwgeyJrZXkiOiAiMTA0ZmUwNjU5ZTEw + YjQyNmNmODhmMDI0ZmI1NzE1NTMiLCAiaWQiOiAiMjhmODcxNzYtOTgwZC00ZGM1LTgyZDQtNGMw + NGI0NmVlMjVmIiwgInJvbGUiOiAie3RvcGljfSBSZXBvcnRpbmcgQW5hbHlzdFxuIiwgInZlcmJv + c2U/IjogdHJ1ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2Nh + bGxpbmdfbGxtIjogIm9ubGluZV9sbG0iLCAibGxtIjogImdwdC00by1taW5pIiwgImRlbGVnYXRp + b25fZW5hYmxlZD8iOiBmYWxzZSwgImFsbG93X2NvZGVfZXhlY3V0aW9uPyI6IGZhbHNlLCAibWF4 + X3JldHJ5X2xpbWl0IjogMiwgInRvb2xzX25hbWVzIjogW119XUqTBAoKY3Jld190YXNrcxKEBAqB + BFt7ImtleSI6ICIwMDE3OTdlM2Y2MmQzM2NkMWQ2MzVlYjZmZGQ1YjQ1MyIsICJpZCI6ICI1NjNh + N2RmNi04OGZjLTRhMjctOGY0YS1lOGZjZTA0NjhlMmEiLCAiYXN5bmNfZXhlY3V0aW9uPyI6IGZh + bHNlLCAiaHVtYW5faW5wdXQ/IjogZmFsc2UsICJhZ2VudF9yb2xlIjogInt0b3BpY30gU2VuaW9y + IERhdGEgUmVzZWFyY2hlclxuIiwgImFnZW50X2tleSI6ICI3M2MzNDljOTNjMTYzYjVkNGRmOThh + NjRmYWMxYzQzMCIsICJ0b29sc19uYW1lcyI6IFtdfSwgeyJrZXkiOiAiYjE3YjE4OGRiZjE0Zjkz + YTk4ZTViOTVhYWQzNjc1NzciLCAiaWQiOiAiM2M1MWNmMzUtMTc3Zi00ZjI3LTkxZTctNzkyZWEz + NjUzN2UwIiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lucHV0PyI6IGZhbHNl + LCAiYWdlbnRfcm9sZSI6ICJ7dG9waWN9IFJlcG9ydGluZyBBbmFseXN0XG4iLCAiYWdlbnRfa2V5 + IjogIjEwNGZlMDY1OWUxMGI0MjZjZjg4ZjAyNGZiNTcxNTUzIiwgInRvb2xzX25hbWVzIjogW119 + XXoCGAGFAQABAAASgAQKEIxpGaiFj1NhpV1WOiWbqYUSCCunkjxbZTLpKgxUYXNrIENyZWF0ZWQw + ATkI0v9lBZY5GEEYdgBmBZY5GEouCghjcmV3X2tleRIiCiA2YmE5MTJmOTEyOWQ2ODQ5YTBhYzQ5 + Y2ZiZDMyMWRhZEoxCgdjcmV3X2lkEiYKJDAwZDQ4YmUyLWQ4ZWUtNDM1MS1iZWY0LWZhNGEyNDQw + OTY4M0ouCgh0YXNrX2tleRIiCiAwMDE3OTdlM2Y2MmQzM2NkMWQ2MzVlYjZmZGQ1YjQ1M0oxCgd0 + YXNrX2lkEiYKJDU2M2E3ZGY2LTg4ZmMtNGEyNy04ZjRhLWU4ZmNlMDQ2OGUyYUo6ChBjcmV3X2Zp + bmdlcnByaW50EiYKJGY1OTAxZDRjLTI3NmYtNGUzMy1hNzM4LTg5Y2E5Zjg2ZDMwMUo6ChB0YXNr + X2ZpbmdlcnByaW50EiYKJDk3ZTk4YmUxLTNmODMtNDgzYi1iYzRhLWI5YWJhMDYxMjY2OEo7Cht0 + YXNrX2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyODowMC41MDg2MTlK + OwoRYWdlbnRfZmluZ2VycHJpbnQSJgokMGQ2YjQ4ZmItOTIzMC00ODJkLThhZmUtODk4MjZiMmVi + NjI5egIYAYUBAAEAAA== + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2293' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:28:03 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are Bicycles Senior Data + Researcher\n. You''re a seasoned researcher with a knack for uncovering the + latest developments in Bicycles. Known for your ability to find the most relevant + information and present it in a clear and concise manner.\n\nYour personal goal + is: Uncover cutting-edge developments in Bicycles\n\nTo give my best complete + final answer to the task respond using the exact following format:\n\nThought: + I now can give a great answer\nFinal Answer: Your final answer must be the great + and the most complete as possible, it must be outcome described.\n\nI MUST use + these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent + Task: Conduct a thorough research about Bicycles Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about Bicycles\n\nyou MUST return the actual complete content as + the final answer, not a summary.\n\nBegin! This is VERY important to you, use + the tools available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1255' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + H4sIAAAAAAAAA4xX244cNw59n68g+ilrdBs9F2cub7aTcQa5Gp5sHtbBQC2xqrgjkRVdut0ODOxv + 7O/lSwJK1ZdxssC+GJ6iRPGQPIfs308AZuRmNzCzg8k2jH7x6u3X3y634/j21Tff0T8v3kncvL2/ + 4DffDD/epdlcb8jq32jz7tZzK2H0mEm4mW1Ek1G9nl5evHhxfXp2tayGIA69XuvHvLiQRSCmxdny + 7GKxvFycXk23ByGLaXYD/zoBAPi9/qtxssMPsxuovuqXgCmZHmc3+0MAsyhev8xMSpSy4TybH4xW + OCPX0O+AZQPWMPS0RjDQa9hgOG0wArznW2Lj4WX9+wbe83s+fQ7Pnn29eEWPCPdoBxYv/RZeurVh + iwE5p2fPbuB+QNCHiAs6wLX4oskB6QA92hzJwors1npM8AUuVvSI6R8wmAQeHWSBPCA4XKOXUb3q + zSARAbuOLOkXT3mgEhbqd2VyxkiY5oBsVp64By/cY4RouMcEZVSvp8slBNJHhcFAIu49gh1M7BE2 + A3l9VIunlvZd/5MpYIJEPVNH1nD22+eajTPNxrtgYoZXExpFf8cZ+2h2iO/kHvIhV8QH6Ap4hVYC + QjDEKUc0YQ7SdRj14Q5NLlHfLnYAk+DNT+8gR2Mfifs5dJQZU4IgTFli/WbYaeoZbaY15S1sKA8Q + ZKXgzDgm6CTCiDEJG08f0YEGo6/hh1GTyBZThXde4ZWUDWlSEb43mmXj9zWegACxKynHbQWUEGty + B+oyZNmY6BKglUWnzp3fQtj5mbfolD6GScuUydNHDSYdvTtGY7NSYg7E1henByLWtx0YXwJxCRX6 + isRp8l29qI4lUcbU0v6oeebSGZuLpqvCvFCYP8eVYbjjLpqUY1E7wpsomzwo2NeUNTwTFesaU9YI + BjRr8rWiuxTSEwdziJiKz82isWtroQOHjqwqRIvJG1bn3P5cpMHU6ic7YFDQwTzWfpweMY0Ka6oY + ZayNplUtFUSOhtMoMdcOrBBfKMSfjmt+S/lAYGp9O7HYaV8dOvZpWc6/gmQNc42DHRg2fpsoQZIu + bzQ/g1kjYMDYNybbkrIE+njoFkcBOZFwAmOtxFrOifORHMY//vPfBCtxWwioWlFpPRi2NQsSOom5 + vr5TA9v4+KXC3KN4ZzrMW7idOKQIf8DNgXyVdvhboXFE1xqRmGVtsqpharcD2sEwpfCk90zJEkxW + FYutNmmbMrZDjfzowFM/5LSjpPekmMFhVm4KQ0JOEhPkQVXXY8wNflLVGEVlmowHpwoWGyUvFeFr + E1fCcEsrjHAbTcA9IYlzFFfsTntqCBhrCLVpXImNGc1HV33s+XiswEdyBxTGKOum73smjRg7iUGT + PYfRxEy2eBMnQkgYMVNN5b5vaxCFldfqYkfAqwpqOvTSrcUau62nv8Oekq99rAh/0RrpmJJN9af9 + VgVQuoNekKe8Vc7wFnpZY+QWduNuS4/eHqMsdpH5wzvaalZKNFX5K9CiIxbyEKX02iNWC7NWYqay + SuTq3NFwpzQ5GMvKkz0K0JowGuq5VfFaAX8vTtMFX6FmGl4LWxzb+JyGyZFWaVMoAPww+ir0EKbr + rl7fN5GXDZSkx59QT8VhVFmcNJE1JfP9WOlqE1UMmwFxJ8xSciUlo4qCaBuBYo/ot8CVS49a+yhB + 8n7m1qmjrppC76p8ulTUv6BpDajiczwpdx0cKaHWc7M7eDQ6tTuJO1+wEnzyPteYY10XdEaA15ql + OpUH9AFz+ozlVkIorAJcWdiY2+S3kM8L4om6LeV75Zkk4S8TVjNTY0m51fd+wPRkfUmQBtlYkxAG + OZIg9c+SQdhvm24ro6ZxcQR8VbS2SWD0ZttGgI3FqjrosldPD/jZyK18Px6jTweDausgLj0/3g4j + diUZ3VC5eH9kMMzS7tW99NfJ8mm/iXrpxyir9NnVWUdMaXjQwSesW2fKMs6q9dMJwK914y1PltiZ + NtSYH7I8Yn3u7Pyq+ZsdFu2D9eL8erJmycYfDF9eXs7/xuGDw2zIp6OleWaNHdAdrh42bFMcyZHh + 5Aj2X8P5O98NOnH//7g/GKzKAbqHMeqy8BTy4VhE/SHyv47t01wDniWMSpGHTBi1FA47U3z7eTBr + PHjoSKfNGKn9RujGh+X59dnV2dnyejk7+XTyJwAAAP//AwAY0C2zMQ0AAA== + headers: + CF-RAY: + - 935e863f7ffba672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:07 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '6671' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999721' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_8844d6bb618a94212bae90c865f4d309 + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are a expert Python developerYou + **must strictly** follow the task description, use the provided raw output as + the input in your code. Your code must:\n- Return results with: print((True, + data)) on success, or print((False, ''very detailed error message'')) on failure. + Make sure the final output is being assined to ''result'' variable.\n- Use the + literal string of the task output (already included in your input) if needed.\n- + Generate the code **following strictly** the task description.\n- Be valid Python + 3 \u2014 executable as-is.\n- DO NOT wrap the output in markdown or use triple + backticks. Return only raw Python code.- DO NOT use `exec`, `eval`, `compile`, + `open`, `os`, `subprocess`, `socket`, `shutil`, or any other system-level modules.\n- + Your code must not perform any file I/O, shell access, or dynamic code execution.\nAdditional + instructions (do not override the previous instructions):\n"}, {"role": "user", + "content": "Based on the task description below, generate Python 3 code that + validates the task output. \nTask description:\nmake sure each bullet contains + a minimum of 100 words\nHere is the raw output from the task: \n''1. **E-Bike + Technology Advancements**: The continued evolution of electric bicycles (e-bikes) + has led to the development of more efficient lithium-ion batteries, enabling + longer ranges up to 100 miles on a single charge while decreasing charging times + significantly.\n\n2. **Smart Bicycles**: Integration of IoT technology in bicycles + has become mainstream, offering features such as GPS tracking, fitness monitoring, + and connectivity with mobile apps for personalized cycling experiences.\n\n3. + **Sustainable Materials**: The bicycle industry has seen a shift towards eco-friendly + materials, with companies utilizing sustainable practices, including recycled + aluminum and biodegradable composites in bike manufacturing.\n\n4. **Urban Infrastructure + Growth**: Cities are investing heavily in cycling infrastructure, resulting + in increased dedicated bike lanes and bike-sharing schemes, making cycling a + more viable option for urban transportation.\n\n5. **Personalized Fit Technologies**: + Advanced fit technologies utilizing 3D scanning and analysis software have emerged + to customize bicycle dimensions according to the rider\u2019s body metrics, + enhancing comfort and efficiency.\n\n6. **Advanced Safety Features**: New bicycles + come equipped with innovative safety mechanisms, including automatic braking + systems, integrated lights, and collision detection sensors that alert riders + of potential dangers.\n\n7. **Carbon Fiber Frames**: The introduction of lighter + and more durable carbon fiber materials has led to significant improvements + in bike performance, particularly in competitive cycling and mountain biking.\n\n8. + **Cycling Advocacy and Legislation**: With a growing awareness of sustainability, + many governments are introducing pro-cycling legislation, encouraging bike usage + through incentives, subsidies, and improved public awareness campaigns.\n\n9. + **Modular Design Concepts**: Bicycle manufacturers are exploring modular designs + that allow users to customize or upgrade components, such as frames and wheels, + without the need for an entirely new bike, promoting longevity and recycling.\n\n10. + **Wearable Tech Integration**: The rise of wearable technology has influenced + cycling, where devices like smart helmets equipped with communication systems + and built-in lights are enhancing safety and connectivity for cyclists.\n\nThese + developments showcase how bicycles are not only transforming in technology but + also playing a crucial role in the shift towards more sustainable transportation + methods.'' \nUse this exact string literal inside your generated code (do not + reference variables like task_output.raw).Now generate Python code that follows + the instructions above."}], "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '3943' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + j858dzY5+nr0XwAAAP//AwCum0MKVg4AAA== + headers: + CF-RAY: + - 935e866ae98ba672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:16 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '9057' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999053' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_2c136a7f1679a99dc073a45b6a7861c1 + status: + code: 200 + message: OK +- request: + body: !!binary | + CsAECiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSlwQKEgoQY3Jld2FpLnRl + bGVtZXRyeRKABAoQLIllNcyZPNBSvvVCZ+AZMxIIdQB2rAVBoOAqDFRhc2sgQ3JlYXRlZDABOdjz + /DEJljkYQXh6/jEJljkYSi4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokMDBkNDhiZTItZDhlZS00MzUxLWJlZjQtZmE0YTI0NDA5Njgz + Si4KCHRhc2tfa2V5EiIKIGIxN2IxODhkYmYxNGY5M2E5OGU1Yjk1YWFkMzY3NTc3SjEKB3Rhc2tf + aWQSJgokM2M1MWNmMzUtMTc3Zi00ZjI3LTkxZTctNzkyZWEzNjUzN2UwSjoKEGNyZXdfZmluZ2Vy + cHJpbnQSJgokZjU5MDFkNGMtMjc2Zi00ZTMzLWE3MzgtODljYTlmODZkMzAxSjoKEHRhc2tfZmlu + Z2VycHJpbnQSJgokZWVhZjMxZTEtNTE2MS00ZDM1LWI2MmQtNWI0OWY1OTIzMWI2SjsKG3Rhc2tf + ZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0LTI1VDExOjI4OjAwLjUwODY5NUo7ChFh + Z2VudF9maW5nZXJwcmludBImCiQ1MzhjMzMwNi00OTUyLTRlMzMtYmY0Ni03NmJhM2Q0N2U1NTB6 + AhgBhQEAAQAA + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '579' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:28:18 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are Bicycles Reporting + Analyst\n. You''re a meticulous analyst with a keen eye for detail. You''re + known for your ability to turn complex data into clear and concise reports, + making it easy for others to understand and act on the information you provide.\n\nYour + personal goal is: Create detailed reports based on Bicycles data analysis and + research findings\n\nTo give my best complete final answer to the task respond + using the exact following format:\n\nThought: I now can give a great answer\nFinal + Answer: Your final answer must be the great and the most complete as possible, + it must be outcome described.\n\nI MUST use these formats, my job depends on + it!"}, {"role": "user", "content": "\nCurrent Task: Review the context you got + and expand each topic into a full section for a report. Make sure the report + is detailed and contains any and all relevant information.\n\n\nThis is the + expected criteria for your final answer: A fully fledge reports with the mains + topics, each with a full section of information. Formatted as markdown without + ''```''\n\nyou MUST return the actual complete content as the final answer, + not a summary.\n\nThis is the context you''re working with:\ngood result\n\nBegin! + This is VERY important to you, use the tools available and give your best Final + Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o-mini", "stop": + ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1431' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + ExIAAA== + headers: + CF-RAY: + - 935e86a53bcda672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:29 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '12767' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999677' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_2b1694a54cac93772dbb36ea6b1272ab + status: + code: 200 + message: OK version: 1 diff --git a/tests/cassettes/test_before_kickoff_modification.yaml b/tests/cassettes/test_before_kickoff_modification.yaml index f1f60ea55..d3ae79094 100644 --- a/tests/cassettes/test_before_kickoff_modification.yaml +++ b/tests/cassettes/test_before_kickoff_modification.yaml @@ -497,4 +497,585 @@ interactions: - req_bb43402829dc4dc60bf6f4b76a72e6c9 http_version: HTTP/1.1 status_code: 200 +- request: + body: !!binary | + CvIRCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSyREKEgoQY3Jld2FpLnRl + bGVtZXRyeRKvDQoQvAcNF9UeD7t09cBcweMTABIIKCD3f9LaxOYqDENyZXcgQ3JlYXRlZDABOZgQ + uy/9lTkYQWCQwy/9lTkYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTE0LjBKGgoOcHl0aG9uX3Zl + cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokNmFjMGQ0ODMtYzU3YS00Y2U2LTkyMjQtYTEzZGVkODZlMDg3 + ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3 + X251bWJlcl9vZl90YXNrcxICGAJKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAko6ChBjcmV3 + X2ZpbmdlcnByaW50EiYKJDU3OGZiNjhlLTgzOTQtNGM4ZC1iNDk3LTQwNWQxNGQwOWE5ZUo7Chtj + cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyNzoyNS4yNDAzMzdK + zwUKC2NyZXdfYWdlbnRzEr8FCrwFW3sia2V5IjogIjczYzM0OWM5M2MxNjNiNWQ0ZGY5OGE2NGZh + YzFjNDMwIiwgImlkIjogIjNiOTJmYzcwLTRjOTAtNDYxNS1hZmIwLTgxNjk3NGRmMjMzMCIsICJy + b2xlIjogInt0b3BpY30gU2VuaW9yIERhdGEgUmVzZWFyY2hlclxuIiwgInZlcmJvc2U/IjogdHJ1 + ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2NhbGxpbmdfbGxt + IjogIm9wZW5haS9tb2RlbF9uYW1lIiwgImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9u + X2VuYWJsZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9y + ZXRyeV9saW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfSwgeyJrZXkiOiAiMTA0ZmUwNjU5ZTEw + YjQyNmNmODhmMDI0ZmI1NzE1NTMiLCAiaWQiOiAiYzIzMThhYzUtODg3ZC00ZTQ5LWFjMTMtOTZj + ZmI4YWU3MjE2IiwgInJvbGUiOiAie3RvcGljfSBSZXBvcnRpbmcgQW5hbHlzdFxuIiwgInZlcmJv + c2U/IjogdHJ1ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2Nh + bGxpbmdfbGxtIjogIm9ubGluZV9sbG0iLCAibGxtIjogImdwdC00by1taW5pIiwgImRlbGVnYXRp + b25fZW5hYmxlZD8iOiBmYWxzZSwgImFsbG93X2NvZGVfZXhlY3V0aW9uPyI6IGZhbHNlLCAibWF4 + X3JldHJ5X2xpbWl0IjogMiwgInRvb2xzX25hbWVzIjogW119XUqTBAoKY3Jld190YXNrcxKEBAqB + BFt7ImtleSI6ICIwMDE3OTdlM2Y2MmQzM2NkMWQ2MzVlYjZmZGQ1YjQ1MyIsICJpZCI6ICI3ODg2 + YzVkZS0xOTNlLTQ4OGItYWRhMi1jMzZkYWY2NDc3NGMiLCAiYXN5bmNfZXhlY3V0aW9uPyI6IGZh + bHNlLCAiaHVtYW5faW5wdXQ/IjogZmFsc2UsICJhZ2VudF9yb2xlIjogInt0b3BpY30gU2VuaW9y + IERhdGEgUmVzZWFyY2hlclxuIiwgImFnZW50X2tleSI6ICI3M2MzNDljOTNjMTYzYjVkNGRmOThh + NjRmYWMxYzQzMCIsICJ0b29sc19uYW1lcyI6IFtdfSwgeyJrZXkiOiAiYjE3YjE4OGRiZjE0Zjkz + YTk4ZTViOTVhYWQzNjc1NzciLCAiaWQiOiAiYTk0ZjlmNjMtMGNkMS00ZDNlLWI3ZTYtYzRlYjBk + OTg2M2JjIiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lucHV0PyI6IGZhbHNl + LCAiYWdlbnRfcm9sZSI6ICJ7dG9waWN9IFJlcG9ydGluZyBBbmFseXN0XG4iLCAiYWdlbnRfa2V5 + IjogIjEwNGZlMDY1OWUxMGI0MjZjZjg4ZjAyNGZiNTcxNTUzIiwgInRvb2xzX25hbWVzIjogW119 + XXoCGAGFAQABAAASgAQKEO4cuS5HPbqzS8Ax1T8E5cQSCLS7XSz6EKGlKgxUYXNrIENyZWF0ZWQw + ATnAkdUv/ZU5GEHwBtYv/ZU5GEouCghjcmV3X2tleRIiCiA2YmE5MTJmOTEyOWQ2ODQ5YTBhYzQ5 + Y2ZiZDMyMWRhZEoxCgdjcmV3X2lkEiYKJDZhYzBkNDgzLWM1N2EtNGNlNi05MjI0LWExM2RlZDg2 + ZTA4N0ouCgh0YXNrX2tleRIiCiAwMDE3OTdlM2Y2MmQzM2NkMWQ2MzVlYjZmZGQ1YjQ1M0oxCgd0 + YXNrX2lkEiYKJDc4ODZjNWRlLTE5M2UtNDg4Yi1hZGEyLWMzNmRhZjY0Nzc0Y0o6ChBjcmV3X2Zp + bmdlcnByaW50EiYKJDU3OGZiNjhlLTgzOTQtNGM4ZC1iNDk3LTQwNWQxNGQwOWE5ZUo6ChB0YXNr + X2ZpbmdlcnByaW50EiYKJGU2NjgzYWRmLWI2MTctNDQ3YS05YTg2LTBlNTJmZDA2MTI2N0o7Cht0 + YXNrX2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyNzoyNS4yNDAyNDBK + OwoRYWdlbnRfZmluZ2VycHJpbnQSJgokZGNlNjg5NWQtNmVlYi00OWRhLThkMTMtYjY4MjNkNWU2 + YzE1egIYAYUBAAEAAA== + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2293' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:27:28 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are Bicycles Senior Data + Researcher\n. You''re a seasoned researcher with a knack for uncovering the + latest developments in Bicycles. Known for your ability to find the most relevant + information and present it in a clear and concise manner.\n\nYour personal goal + is: Uncover cutting-edge developments in Bicycles\n\nTo give my best complete + final answer to the task respond using the exact following format:\n\nThought: + I now can give a great answer\nFinal Answer: Your final answer must be the great + and the most complete as possible, it must be outcome described.\n\nI MUST use + these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent + Task: Conduct a thorough research about Bicycles Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about Bicycles\n\nyou MUST return the actual complete content as + the final answer, not a summary.\n\nBegin! This is VERY important to you, use + the tools available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1255' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + DwAAAP//AwC1cSuaOg4AAA== + headers: + CF-RAY: + - 935e856368caa672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:27:33 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '7417' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999721' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_e386d15318a2f6331fce590264267ebe + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are a expert Python developerYou + **must strictly** follow the task description, use the provided raw output as + the input in your code. Your code must:\n- Return results with: print((True, + data)) on success, or print((False, ''very detailed error message'')) on failure. + Make sure the final output is being assined to ''result'' variable.\n- Use the + literal string of the task output (already included in your input) if needed.\n- + Generate the code **following strictly** the task description.\n- Be valid Python + 3 \u2014 executable as-is.\n- DO NOT wrap the output in markdown or use triple + backticks. Return only raw Python code.- DO NOT use `exec`, `eval`, `compile`, + `open`, `os`, `subprocess`, `socket`, `shutil`, or any other system-level modules.\n- + Your code must not perform any file I/O, shell access, or dynamic code execution.\nAdditional + instructions (do not override the previous instructions):\n"}, {"role": "user", + "content": "Based on the task description below, generate Python 3 code that + validates the task output. \nTask description:\nmake sure each bullet contains + a minimum of 100 words\nHere is the raw output from the task: \n''1. **Electric + Bicycle Market Boom**: The popularity of electric bicycles (e-bikes) has surged, + with an estimated market growth of 30% year-over-year in 2025. Newer models + offer extended ranges due to advances in battery technology, some reaching up + to 150 miles on a single charge. \n\n2. **Smart Cycling Technologies**: Integration + of IoT (Internet of Things) allows for smart bicycles equipped with GPS navigation, + health monitoring, and ride optimization features. These bicycles can connect + to your smartphone to provide real-time analytics on performance and route planning.\n\n3. + **Sustainable Materials**: Manufacturers are increasingly using sustainable + materials such as bio-based composites and recycled metals to construct frames, + which not only reduces carbon footprints but also appeals to eco-conscious consumers.\n\n4. + **Advancements in Safety Features**: New safety technologies, including automatic + braking systems, integrated lights, and proximity sensors, are being introduced + to prevent accidents. Many urban bicycles now come standard with these features + to improve rider safety in crowded environments.\n\n5. **Focus on Urban Infrastructure**: + Cities worldwide are investing heavily in cycling infrastructure, developing + dedicated bike lanes, parking, and repair stations. This shift is aimed at promoting + cycling as a viable means of transportation, reducing traffic congestion and + pollution.\n\n6. **Foldable and Compact Designs**: The demand for foldable bicycles + has increased among urban dwellers, leading to innovations in lightweight, compact + designs that are convenient for commuting and storage in tight living spaces.\n\n7. + **Bike-Sharing Programs Expansion**: Cities continue to expand bike-sharing + programs, with new app-based models that allow users to locate, rent, and return + bicycles seamlessly. These systems are thriving as a cost-effective and environmentally + friendly transportation option.\n\n8. **Personalization and Customization Trends**: + Cyclists are seeking more personalized bicycles tailored to their riding style + and aesthetics. Customization options for frame size, color, components, and + accessories are becoming a standard offering from several manufacturers.\n\n9. + **Cross-Training Features**: Notably, more bicycles come equipped with features + promoting cross-training. For example, hybrid models incorporate removable components + that allow users to modify their bicycles for different activities like touring + or mountain biking.\n\n10. **Innovative Financing Options**: To make bicycles + more accessible, many retailers are offering innovative financing solutions + such as subscription services that allow consumers to pay monthly fees for bike + use, maintenance, and upgrades, making bike ownership more flexible and appealing.'' + \nUse this exact string literal inside your generated code (do not reference + variables like task_output.raw).Now generate Python code that follows the instructions + above."}], "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '4206' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + headers: + CF-RAY: + - 935e8593e86da672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:27:44 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '10807' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149998986' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_24d2cc01e619a6bb716a1c58741de95f + status: + code: 200 + message: OK +- request: + body: !!binary | + CsAECiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSlwQKEgoQY3Jld2FpLnRl + bGVtZXRyeRKABAoQgm88k6kvWnXfKwgB6Klo9hIIJ/X3pHUMguAqDFRhc2sgQ3JlYXRlZDABOXj5 + DZcBljkYQcDhD5cBljkYSi4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokNmFjMGQ0ODMtYzU3YS00Y2U2LTkyMjQtYTEzZGVkODZlMDg3 + Si4KCHRhc2tfa2V5EiIKIGIxN2IxODhkYmYxNGY5M2E5OGU1Yjk1YWFkMzY3NTc3SjEKB3Rhc2tf + aWQSJgokYTk0ZjlmNjMtMGNkMS00ZDNlLWI3ZTYtYzRlYjBkOTg2M2JjSjoKEGNyZXdfZmluZ2Vy + cHJpbnQSJgokNTc4ZmI2OGUtODM5NC00YzhkLWI0OTctNDA1ZDE0ZDA5YTllSjoKEHRhc2tfZmlu + Z2VycHJpbnQSJgokNTUwZDhhZmEtY2U0Ni00YWUxLThjNDAtNTk1ZjI4MDgyYzdjSjsKG3Rhc2tf + ZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0LTI1VDExOjI3OjI1LjI0MDI5NUo7ChFh + Z2VudF9maW5nZXJwcmludBImCiRkYTAwM2NmYS1lM2JjLTQwY2EtYWIyNy01ZjRkYzU5ZWEwNGV6 + AhgBhQEAAQAA + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '579' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:27:48 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are Bicycles Reporting + Analyst\n. You''re a meticulous analyst with a keen eye for detail. You''re + known for your ability to turn complex data into clear and concise reports, + making it easy for others to understand and act on the information you provide.\n\nYour + personal goal is: Create detailed reports based on Bicycles data analysis and + research findings\n\nTo give my best complete final answer to the task respond + using the exact following format:\n\nThought: I now can give a great answer\nFinal + Answer: Your final answer must be the great and the most complete as possible, + it must be outcome described.\n\nI MUST use these formats, my job depends on + it!"}, {"role": "user", "content": "\nCurrent Task: Review the context you got + and expand each topic into a full section for a report. Make sure the report + is detailed and contains any and all relevant information.\n\n\nThis is the + expected criteria for your final answer: A fully fledge reports with the mains + topics, each with a full section of information. Formatted as markdown without + ''```''\n\nyou MUST return the actual complete content as the final answer, + not a summary.\n\nThis is the context you''re working with:\ngood result\n\nBegin! + This is VERY important to you, use the tools available and give your best Final + Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o-mini", "stop": + ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1431' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + headers: + CF-RAY: + - 935e85d919d4a672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:00 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '16131' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999677' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_17c54ba3e3f29f41fa22361a6191b8e5 + status: + code: 200 + message: OK version: 1 diff --git a/tests/cassettes/test_before_kickoff_with_none_input.yaml b/tests/cassettes/test_before_kickoff_with_none_input.yaml index e906e8018..269ba70df 100644 --- a/tests/cassettes/test_before_kickoff_with_none_input.yaml +++ b/tests/cassettes/test_before_kickoff_with_none_input.yaml @@ -489,4 +489,575 @@ interactions: - req_4bd436f5144121694f8df654ed8514ea http_version: HTTP/1.1 status_code: 200 +- request: + body: !!binary | + CvIRCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSyREKEgoQY3Jld2FpLnRl + bGVtZXRyeRKvDQoQKjhuzGxKJ/y+Apo9XhTmYRIIzQJISp1HuCAqDENyZXcgQ3JlYXRlZDABOVAk + JjoMljkYQXh8MjoMljkYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTE0LjBKGgoOcHl0aG9uX3Zl + cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokNmY0YmQ0Y2YtMzYwZi00OWE1LTkxMWQtMmNjNGVmOGY1MTlk + ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3 + X251bWJlcl9vZl90YXNrcxICGAJKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAko6ChBjcmV3 + X2ZpbmdlcnByaW50EiYKJDdiZTAyNjNmLWQzOWQtNDVmNC05NzE4LTZjMTM5MTJmZDNhOEo7Chtj + cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyODoyOS44NDA0ODRK + zwUKC2NyZXdfYWdlbnRzEr8FCrwFW3sia2V5IjogIjczYzM0OWM5M2MxNjNiNWQ0ZGY5OGE2NGZh + YzFjNDMwIiwgImlkIjogImNlMTBhMjRhLTdmNTQtNDU2ZS04YzNlLTkzMzgyNWQyYTYxYiIsICJy + b2xlIjogInt0b3BpY30gU2VuaW9yIERhdGEgUmVzZWFyY2hlclxuIiwgInZlcmJvc2U/IjogdHJ1 + ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2NhbGxpbmdfbGxt + IjogIm9wZW5haS9tb2RlbF9uYW1lIiwgImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9u + X2VuYWJsZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9y + ZXRyeV9saW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfSwgeyJrZXkiOiAiMTA0ZmUwNjU5ZTEw + YjQyNmNmODhmMDI0ZmI1NzE1NTMiLCAiaWQiOiAiOWVlM2I1OTEtNTEzYS00ZTZlLThjOGQtZTE0 + MmY0NzRkZDU3IiwgInJvbGUiOiAie3RvcGljfSBSZXBvcnRpbmcgQW5hbHlzdFxuIiwgInZlcmJv + c2U/IjogdHJ1ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2Nh + bGxpbmdfbGxtIjogIm9ubGluZV9sbG0iLCAibGxtIjogImdwdC00by1taW5pIiwgImRlbGVnYXRp + b25fZW5hYmxlZD8iOiBmYWxzZSwgImFsbG93X2NvZGVfZXhlY3V0aW9uPyI6IGZhbHNlLCAibWF4 + X3JldHJ5X2xpbWl0IjogMiwgInRvb2xzX25hbWVzIjogW119XUqTBAoKY3Jld190YXNrcxKEBAqB + BFt7ImtleSI6ICIwMDE3OTdlM2Y2MmQzM2NkMWQ2MzVlYjZmZGQ1YjQ1MyIsICJpZCI6ICIwZTVk + NzlkOS1lY2M5LTQ0ZmQtYjhlOS0xYjM0NjdlZjIxYWIiLCAiYXN5bmNfZXhlY3V0aW9uPyI6IGZh + bHNlLCAiaHVtYW5faW5wdXQ/IjogZmFsc2UsICJhZ2VudF9yb2xlIjogInt0b3BpY30gU2VuaW9y + IERhdGEgUmVzZWFyY2hlclxuIiwgImFnZW50X2tleSI6ICI3M2MzNDljOTNjMTYzYjVkNGRmOThh + NjRmYWMxYzQzMCIsICJ0b29sc19uYW1lcyI6IFtdfSwgeyJrZXkiOiAiYjE3YjE4OGRiZjE0Zjkz + YTk4ZTViOTVhYWQzNjc1NzciLCAiaWQiOiAiNmZhOTQ1MDMtOTA3OS00NWE5LWI1MjgtY2QyMzFj + MmFmNzc4IiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxzZSwgImh1bWFuX2lucHV0PyI6IGZhbHNl + LCAiYWdlbnRfcm9sZSI6ICJ7dG9waWN9IFJlcG9ydGluZyBBbmFseXN0XG4iLCAiYWdlbnRfa2V5 + IjogIjEwNGZlMDY1OWUxMGI0MjZjZjg4ZjAyNGZiNTcxNTUzIiwgInRvb2xzX25hbWVzIjogW119 + XXoCGAGFAQABAAASgAQKEBBhsMgNtJOySK+WKw3CfaYSCJ+xTDlkU5gKKgxUYXNrIENyZWF0ZWQw + ATm4vkE6DJY5GEEwKEI6DJY5GEouCghjcmV3X2tleRIiCiA2YmE5MTJmOTEyOWQ2ODQ5YTBhYzQ5 + Y2ZiZDMyMWRhZEoxCgdjcmV3X2lkEiYKJDZmNGJkNGNmLTM2MGYtNDlhNS05MTFkLTJjYzRlZjhm + NTE5ZEouCgh0YXNrX2tleRIiCiAwMDE3OTdlM2Y2MmQzM2NkMWQ2MzVlYjZmZGQ1YjQ1M0oxCgd0 + YXNrX2lkEiYKJDBlNWQ3OWQ5LWVjYzktNDRmZC1iOGU5LTFiMzQ2N2VmMjFhYko6ChBjcmV3X2Zp + bmdlcnByaW50EiYKJDdiZTAyNjNmLWQzOWQtNDVmNC05NzE4LTZjMTM5MTJmZDNhOEo6ChB0YXNr + X2ZpbmdlcnByaW50EiYKJDk4ZWM5YjdmLTE1MjctNGVlOS05YzE3LWU5ODhkYTE1MDI0ZUo7Cht0 + YXNrX2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyODoyOS44NDAzOTlK + OwoRYWdlbnRfZmluZ2VycHJpbnQSJgokYTAyYWY5OWEtMmIwOS00ZDQ3LWIwOWUtZDY4NDZmMDE1 + YzY0egIYAYUBAAEAAA== + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2293' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:28:33 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are {topic} Senior Data + Researcher\n. You''re a seasoned researcher with a knack for uncovering the + latest developments in {topic}. Known for your ability to find the most relevant + information and present it in a clear and concise manner.\n\nYour personal goal + is: Uncover cutting-edge developments in {topic}\n\nTo give my best complete + final answer to the task respond using the exact following format:\n\nThought: + I now can give a great answer\nFinal Answer: Your final answer must be the great + and the most complete as possible, it must be outcome described.\n\nI MUST use + these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent + Task: Conduct a thorough research about {topic} Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about {topic}\n\nyou MUST return the actual complete content as + the final answer, not a summary.\n\nBegin! This is VERY important to you, use + the tools available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1250' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + headers: + CF-RAY: + - 935e86f69e7ea672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:37 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '7959' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999722' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_f1fb5f6a769ecc5ee95c654a612afaed + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are a expert Python developerYou + **must strictly** follow the task description, use the provided raw output as + the input in your code. Your code must:\n- Return results with: print((True, + data)) on success, or print((False, ''very detailed error message'')) on failure. + Make sure the final output is being assined to ''result'' variable.\n- Use the + literal string of the task output (already included in your input) if needed.\n- + Generate the code **following strictly** the task description.\n- Be valid Python + 3 \u2014 executable as-is.\n- DO NOT wrap the output in markdown or use triple + backticks. Return only raw Python code.- DO NOT use `exec`, `eval`, `compile`, + `open`, `os`, `subprocess`, `socket`, `shutil`, or any other system-level modules.\n- + Your code must not perform any file I/O, shell access, or dynamic code execution.\nAdditional + instructions (do not override the previous instructions):\n"}, {"role": "user", + "content": "Based on the task description below, generate Python 3 code that + validates the task output. \nTask description:\nmake sure each bullet contains + a minimum of 100 words\nHere is the raw output from the task: \n''1. **AI Integration + in Data Research**: In 2025, advancements in artificial intelligence have dramatically + transformed data research methodologies, allowing for automated data cleaning, + analysis, and pattern recognition, saving researchers significant time and resources.\n\n2. + **Real-time Data Processing**: Real-time data analytics capabilities have become + a standard, enabling researchers to access and analyze live data streams, facilitating + immediate decision-making and response strategies across various sectors.\n\n3. + **Enhanced Data Security Measures**: With the rise of data breaches, 2025 has + seen stronger cybersecurity protocols in place, including advanced encryption + methods and AI-driven security systems that continuously monitor for vulnerabilities.\n\n4. + **Focus on Ethical Data Use**: There is an increasing emphasis on the ethical + implications of data research, with frameworks being developed to ensure data + is collected and utilized with respect to privacy and consent, particularly + regarding personal data.\n\n5. **Rise of Citizen Data Scientists**: The barrier + to entry for data analysis has lowered, with citizen data scientists emerging + as a powerful force in data research, utilizing intuitive analytics tools and + platforms to conduct their own analyses.\n\n6. **Data Sustainability Practices**: + A shift towards sustainability in data research is being observed, with researchers + adopting green strategies for data storage and processing to minimize environmental + impact.\n\n7. **Cross-disciplinary Collaboration**: 2025 highlights a trend + toward interdisciplinary research teams that blend data science with fields + such as sociology, environmental science, and healthcare, fostering a more holistic + approach to data analysis and problem-solving.\n\n8. **Expanding Use of Quantum + Computing**: The adoption of quantum computing in data research is beginning + to show promise, allowing for unprecedented speed and efficiency in handling + complex datasets and performing computations beyond classical capabilities.\n\n9. + **Augmented Reality (AR) Data Visualization**: AR technologies are being increasingly + utilized for data visualization, providing researchers with immersive and interactive + ways to analyze and present data, enhancing comprehension and engagement.\n\n10. + **Evolving Data Ownership Models**: In 2025, discussions surrounding data ownership + have evolved, with new models emerging that address consumer rights over their + data and create frameworks for fair data-sharing practices among organizations.'' + \nUse this exact string literal inside your generated code (do not reference + variables like task_output.raw).Now generate Python code that follows the instructions + above."}], "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '3963' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + 3DbS63AOAAA= + headers: + CF-RAY: + - 935e87299cf3a672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:44 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '5857' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999047' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_4bf364c080fb893f411bc0caf70a1623 + status: + code: 200 + message: OK +- request: + body: !!binary | + CsAECiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSlwQKEgoQY3Jld2FpLnRl + bGVtZXRyeRKABAoQJwgvn1O+77bcAv/6ETXhqhII7SvEEsVmcrsqDFRhc2sgQ3JlYXRlZDABOWAv + i44PljkYQUiqjI4PljkYSi4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokNmY0YmQ0Y2YtMzYwZi00OWE1LTkxMWQtMmNjNGVmOGY1MTlk + Si4KCHRhc2tfa2V5EiIKIGIxN2IxODhkYmYxNGY5M2E5OGU1Yjk1YWFkMzY3NTc3SjEKB3Rhc2tf + aWQSJgokNmZhOTQ1MDMtOTA3OS00NWE5LWI1MjgtY2QyMzFjMmFmNzc4SjoKEGNyZXdfZmluZ2Vy + cHJpbnQSJgokN2JlMDI2M2YtZDM5ZC00NWY0LTk3MTgtNmMxMzkxMmZkM2E4SjoKEHRhc2tfZmlu + Z2VycHJpbnQSJgokMTE4OWMxYzYtODVjOC00ZmJjLWE3MjItN2ZiNWUzNDY3MjVlSjsKG3Rhc2tf + ZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0LTI1VDExOjI4OjI5Ljg0MDQ0N0o7ChFh + Z2VudF9maW5nZXJwcmludBImCiRiZDhjMGVhZC1iM2ZiLTQ0ZjMtYTFjYS0yNDFjM2FiN2M1OTN6 + AhgBhQEAAQAA + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '579' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:28:48 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are {topic} Reporting + Analyst\n. You''re a meticulous analyst with a keen eye for detail. You''re + known for your ability to turn complex data into clear and concise reports, + making it easy for others to understand and act on the information you provide.\n\nYour + personal goal is: Create detailed reports based on {topic} data analysis and + research findings\n\nTo give my best complete final answer to the task respond + using the exact following format:\n\nThought: I now can give a great answer\nFinal + Answer: Your final answer must be the great and the most complete as possible, + it must be outcome described.\n\nI MUST use these formats, my job depends on + it!"}, {"role": "user", "content": "\nCurrent Task: Review the context you got + and expand each topic into a full section for a report. Make sure the report + is detailed and contains any and all relevant information.\n\n\nThis is the + expected criteria for your final answer: A fully fledge reports with the mains + topics, each with a full section of information. Formatted as markdown without + ''```''\n\nyou MUST return the actual complete content as the final answer, + not a summary.\n\nThis is the context you''re working with:\ngood result\n\nBegin! + This is VERY important to you, use the tools available and give your best Final + Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o-mini", "stop": + ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1429' + content-type: + - application/json + cookie: + - __cf_bm=wkXEexhVr9ZBmuI6XzF9uAdWMQBGN2mfn1UXhjqQg_s-1745591253-1.0.1.1-S2vloTEUZzHEud9Qla6EbW7.X7nqiOc1C3eamvIIeYXVotTLtfSySfDlIAp0RlW0Hl54Ct8rrq0K89cjXxwDn7w3DYax8U3M1c_YRUUUAvw; + _cfuvid=RWKAtnAhCQHGaWcX1nyhjjIy.taznv4CvumzL.iviUA-1745591253057-0.0.1.1-604800000 + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + headers: + CF-RAY: + - 935e874ff8c8a672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:28:56 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '12590' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999678' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_bf16bbadffb983950a431db59075b0f2 + status: + code: 200 + message: OK version: 1 diff --git a/tests/cassettes/test_multiple_before_after_kickoff.yaml b/tests/cassettes/test_multiple_before_after_kickoff.yaml index 7cd59d474..884f8f787 100644 --- a/tests/cassettes/test_multiple_before_after_kickoff.yaml +++ b/tests/cassettes/test_multiple_before_after_kickoff.yaml @@ -492,4 +492,584 @@ interactions: - req_1a11ba8b9c0cb1803e99cd95fa1fb890 http_version: HTTP/1.1 status_code: 200 +- request: + body: !!binary | + CuoRCiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSwREKEgoQY3Jld2FpLnRl + bGVtZXRyeRKnDQoQa1D4CGN+4CdZeuPKfuwBSBIIBesOCPKBdOkqDENyZXcgQ3JlYXRlZDABOQj5 + Z40SljkYQRg9eI0SljkYShsKDmNyZXdhaV92ZXJzaW9uEgkKBzAuMTE0LjBKGgoOcHl0aG9uX3Zl + cnNpb24SCAoGMy4xMi45Si4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokYjU4ZmQ1YWMtMTk4Ni00ZDAzLTg3NDgtNDBlMDU2OWY4Y2Yy + ShwKDGNyZXdfcHJvY2VzcxIMCgpzZXF1ZW50aWFsShEKC2NyZXdfbWVtb3J5EgIQAEoaChRjcmV3 + X251bWJlcl9vZl90YXNrcxICGAJKGwoVY3Jld19udW1iZXJfb2ZfYWdlbnRzEgIYAko6ChBjcmV3 + X2ZpbmdlcnByaW50EiYKJDI1ZDRmZDE1LTA1ODUtNGRhZS1hYTc0LTZlNTUyYzgxODk3N0o7Chtj + cmV3X2ZpbmdlcnByaW50X2NyZWF0ZWRfYXQSHAoaMjAyNS0wNC0yNVQxMToyODo1Ny4wMDYzODlK + xwUKC2NyZXdfYWdlbnRzErcFCrQFW3sia2V5IjogIjczYzM0OWM5M2MxNjNiNWQ0ZGY5OGE2NGZh + YzFjNDMwIiwgImlkIjogImMxZGU0N2JlLTFlMzEtNDQ0Ni1hZDQzLTA5NGJlM2RhZWIwNSIsICJy + b2xlIjogInt0b3BpY30gU2VuaW9yIERhdGEgUmVzZWFyY2hlclxuIiwgInZlcmJvc2U/IjogdHJ1 + ZSwgIm1heF9pdGVyIjogMjUsICJtYXhfcnBtIjogbnVsbCwgImZ1bmN0aW9uX2NhbGxpbmdfbGxt + IjogImxvY2FsX2xsbSIsICJsbG0iOiAiZ3B0LTRvLW1pbmkiLCAiZGVsZWdhdGlvbl9lbmFibGVk + PyI6IGZhbHNlLCAiYWxsb3dfY29kZV9leGVjdXRpb24/IjogZmFsc2UsICJtYXhfcmV0cnlfbGlt + aXQiOiAyLCAidG9vbHNfbmFtZXMiOiBbXX0sIHsia2V5IjogIjEwNGZlMDY1OWUxMGI0MjZjZjg4 + ZjAyNGZiNTcxNTUzIiwgImlkIjogImYwNzVkMzFmLTcyNzgtNGU1MS1iZjU3LTgwN2QxNzRhYWZl + YyIsICJyb2xlIjogInt0b3BpY30gUmVwb3J0aW5nIEFuYWx5c3RcbiIsICJ2ZXJib3NlPyI6IHRy + dWUsICJtYXhfaXRlciI6IDI1LCAibWF4X3JwbSI6IG51bGwsICJmdW5jdGlvbl9jYWxsaW5nX2xs + bSI6ICJvbmxpbmVfbGxtIiwgImxsbSI6ICJncHQtNG8tbWluaSIsICJkZWxlZ2F0aW9uX2VuYWJs + ZWQ/IjogZmFsc2UsICJhbGxvd19jb2RlX2V4ZWN1dGlvbj8iOiBmYWxzZSwgIm1heF9yZXRyeV9s + aW1pdCI6IDIsICJ0b29sc19uYW1lcyI6IFtdfV1KkwQKCmNyZXdfdGFza3MShAQKgQRbeyJrZXki + OiAiMDAxNzk3ZTNmNjJkMzNjZDFkNjM1ZWI2ZmRkNWI0NTMiLCAiaWQiOiAiNjJhOWM5N2QtY2I1 + OC00MDU5LTkwNDQtZGFjMGM5NDE1NDgzIiwgImFzeW5jX2V4ZWN1dGlvbj8iOiBmYWxzZSwgImh1 + bWFuX2lucHV0PyI6IGZhbHNlLCAiYWdlbnRfcm9sZSI6ICJ7dG9waWN9IFNlbmlvciBEYXRhIFJl + c2VhcmNoZXJcbiIsICJhZ2VudF9rZXkiOiAiNzNjMzQ5YzkzYzE2M2I1ZDRkZjk4YTY0ZmFjMWM0 + MzAiLCAidG9vbHNfbmFtZXMiOiBbXX0sIHsia2V5IjogImIxN2IxODhkYmYxNGY5M2E5OGU1Yjk1 + YWFkMzY3NTc3IiwgImlkIjogIjVmYjliYTA4LTg4NzctNGM2Ny1hZDY1LTQ5M2VmMWQyMmUzNCIs + ICJhc3luY19leGVjdXRpb24/IjogZmFsc2UsICJodW1hbl9pbnB1dD8iOiBmYWxzZSwgImFnZW50 + X3JvbGUiOiAie3RvcGljfSBSZXBvcnRpbmcgQW5hbHlzdFxuIiwgImFnZW50X2tleSI6ICIxMDRm + ZTA2NTllMTBiNDI2Y2Y4OGYwMjRmYjU3MTU1MyIsICJ0b29sc19uYW1lcyI6IFtdfV16AhgBhQEA + AQAAEoAEChDCfDeSqiPVqIlnyFMODhbJEghtwT/c3MzqLyoMVGFzayBDcmVhdGVkMAE5CJKNjRKW + ORhBGDaOjRKWORhKLgoIY3Jld19rZXkSIgogNmJhOTEyZjkxMjlkNjg0OWEwYWM0OWNmYmQzMjFk + YWRKMQoHY3Jld19pZBImCiRiNThmZDVhYy0xOTg2LTRkMDMtODc0OC00MGUwNTY5ZjhjZjJKLgoI + dGFza19rZXkSIgogMDAxNzk3ZTNmNjJkMzNjZDFkNjM1ZWI2ZmRkNWI0NTNKMQoHdGFza19pZBIm + CiQ2MmE5Yzk3ZC1jYjU4LTQwNTktOTA0NC1kYWMwYzk0MTU0ODNKOgoQY3Jld19maW5nZXJwcmlu + dBImCiQyNWQ0ZmQxNS0wNTg1LTRkYWUtYWE3NC02ZTU1MmM4MTg5NzdKOgoQdGFza19maW5nZXJw + cmludBImCiRmYTc4M2NkZS0yYTIzLTQxNzAtYjU2ZC1iMzFjZTcxMGNhZDNKOwobdGFza19maW5n + ZXJwcmludF9jcmVhdGVkX2F0EhwKGjIwMjUtMDQtMjVUMTE6Mjg6NTcuMDA2MjU2SjsKEWFnZW50 + X2ZpbmdlcnByaW50EiYKJDMzZmRiMDZkLWY0ZjItNGVhZS1iZDhkLTE0NGU4NmIwMWNiMnoCGAGF + AQABAAA= + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '2285' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:28:58 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are plants Senior Data + Researcher\n. You''re a seasoned researcher with a knack for uncovering the + latest developments in plants. Known for your ability to find the most relevant + information and present it in a clear and concise manner.\n\nYour personal goal + is: Uncover cutting-edge developments in plants\n\nTo give my best complete + final answer to the task respond using the exact following format:\n\nThought: + I now can give a great answer\nFinal Answer: Your final answer must be the great + and the most complete as possible, it must be outcome described.\n\nI MUST use + these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent + Task: Conduct a thorough research about plants Make sure you find any interesting + and relevant information given the current year is 2025.\n\n\nThis is the expected + criteria for your final answer: A list with 10 bullet points of the most relevant + information about plants\n\nyou MUST return the actual complete content as the + final answer, not a summary.\n\nBegin! This is VERY important to you, use the + tools available and give your best Final Answer, your job depends on it!\n\nThought:"}], + "model": "gpt-4o-mini", "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1245' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + AAD//wMA4PXJ2A0PAAA= + headers: + CF-RAY: + - 935e87a06f4aa672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:29:05 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '8799' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999724' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_6c63c9b5ba9fa2d10d8dbb539b171c23 + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are a expert Python developerYou + **must strictly** follow the task description, use the provided raw output as + the input in your code. Your code must:\n- Return results with: print((True, + data)) on success, or print((False, ''very detailed error message'')) on failure. + Make sure the final output is being assined to ''result'' variable.\n- Use the + literal string of the task output (already included in your input) if needed.\n- + Generate the code **following strictly** the task description.\n- Be valid Python + 3 \u2014 executable as-is.\n- DO NOT wrap the output in markdown or use triple + backticks. Return only raw Python code.- DO NOT use `exec`, `eval`, `compile`, + `open`, `os`, `subprocess`, `socket`, `shutil`, or any other system-level modules.\n- + Your code must not perform any file I/O, shell access, or dynamic code execution.\nAdditional + instructions (do not override the previous instructions):\n"}, {"role": "user", + "content": "Based on the task description below, generate Python 3 code that + validates the task output. \nTask description:\nmake sure each bullet contains + a minimum of 100 words\nHere is the raw output from the task: \n''1. **Genetic + Engineering Advances**: Recent breakthroughs in CRISPR technology have enabled + scientists to develop crops with enhanced traits such as drought resistance, + disease tolerance, and improved nutritional profiles, significantly impacting + food security.\n\n2. **Plant-Based Bioplastics**: The development of bioplastics + derived from plant materials is gaining traction, with innovations that reduce + reliance on fossil fuels. Companies are now producing biodegradable plastics + from sources like corn and sugarcane, contributing to environmental sustainability.\n\n3. + **Vertical Farming Trends**: Urban vertical farming has surged, utilizing hydroponics + and aeroponics to grow fresh produce in urban areas. This method minimizes land + use and transportation emissions, providing local food sources in densely populated + cities.\n\n4. **Plant Communication Research**: Studies have shown that certain + plants can communicate through mycorrhizal networks, allowing them to share + nutrients and even warn each other of pests. This has opened new avenues for + understanding plant ecology and cooperative behavior.\n\n5. **Medicinal Plant + Discoveries**: Research into traditional medicinal plants has led to the discovery + of new compounds with potential therapeutic effects, including anti-inflammatory + and antioxidant properties, paving the way for novel pharmaceuticals.\n\n6. + **Climate Resilience Initiatives**: Plant breeders are increasingly focused + on developing climate-resilient crops capable of thriving in extreme conditions + due to climate change. This includes breeding for heat tolerance and salinity + resistance to ensure food production sustainability.\n\n7. **Microbial Support + Systems**: The role of soil microbiomes in plant health has been spotlighted, + with findings indicating that beneficial microbes can enhance nutrient uptake, + disease resistance, and overall plant vigor, prompting a shift towards more + holistic farming practices.\n\n8. **Eco-friendly Pest Management**: Advances + in integrated pest management (IPM) techniques have emerged, utilizing biological + control agents, pheromone traps, and organic pesticides to reduce chemical input + while maintaining crop health.\n\n9. **Perennial Crop Research**: There is a + growing interest in perennial crops that do not require annual replanting and + can provide more sustainable agricultural options. Perennials conserve soil + health, improve biodiversity, and reduce carbon footprints.\n\n10. **Synthetic + Biology and Food Production**: The integration of synthetic biology into agriculture + has led to the creation of crops that can grow in suboptimal conditions, such + as salty or heavily polluted soils, allowing for the revitalization of degraded + lands and expanded agricultural frontiers.\n\nThese highlights represent the + forefront of plant research and innovation, demonstrating the myriad ways in + which plants continue to be a focal point for scientific inquiry and practical + application in addressing global challenges.'' \nUse this exact string literal + inside your generated code (do not reference variables like task_output.raw).Now + generate Python code that follows the instructions above."}], "model": "gpt-4o-mini", + "stop": ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '4415' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + AAD//wMAvk3QbD0QAAA= + headers: + CF-RAY: + - 935e87d8be83a672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:29:19 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '13449' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149998934' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_17bb8696f535c626c17a5f2a2fcb08ef + status: + code: 200 + message: OK +- request: + body: !!binary | + CsAECiQKIgoMc2VydmljZS5uYW1lEhIKEGNyZXdBSS10ZWxlbWV0cnkSlwQKEgoQY3Jld2FpLnRl + bGVtZXRyeRKABAoQ5GJxtiLjMfqcLosmZBGCHhIIFCC6dc+ZfEgqDFRhc2sgQ3JlYXRlZDABOfC0 + gNUXljkYQVAcgtUXljkYSi4KCGNyZXdfa2V5EiIKIDZiYTkxMmY5MTI5ZDY4NDlhMGFjNDljZmJk + MzIxZGFkSjEKB2NyZXdfaWQSJgokYjU4ZmQ1YWMtMTk4Ni00ZDAzLTg3NDgtNDBlMDU2OWY4Y2Yy + Si4KCHRhc2tfa2V5EiIKIGIxN2IxODhkYmYxNGY5M2E5OGU1Yjk1YWFkMzY3NTc3SjEKB3Rhc2tf + aWQSJgokNWZiOWJhMDgtODg3Ny00YzY3LWFkNjUtNDkzZWYxZDIyZTM0SjoKEGNyZXdfZmluZ2Vy + cHJpbnQSJgokMjVkNGZkMTUtMDU4NS00ZGFlLWFhNzQtNmU1NTJjODE4OTc3SjoKEHRhc2tfZmlu + Z2VycHJpbnQSJgokNTJjZjkwYzUtYWIyOC00MTYxLWI0NjItZDhmNDg5YTUzZTlhSjsKG3Rhc2tf + ZmluZ2VycHJpbnRfY3JlYXRlZF9hdBIcChoyMDI1LTA0LTI1VDExOjI4OjU3LjAwNjMzMUo7ChFh + Z2VudF9maW5nZXJwcmludBImCiRlODJmMThiMC01NTBjLTQ0ZTItOWRlNS0yYmI2NWMzZWZhY2J6 + AhgBhQEAAQAA + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + Connection: + - keep-alive + Content-Length: + - '579' + Content-Type: + - application/x-protobuf + User-Agent: + - OTel-OTLP-Exporter-Python/1.31.1 + method: POST + uri: https://telemetry.crewai.com:4319/v1/traces + response: + body: + string: "\n\0" + headers: + Content-Length: + - '2' + Content-Type: + - application/x-protobuf + Date: + - Fri, 25 Apr 2025 14:29:23 GMT + status: + code: 200 + message: OK +- request: + body: '{"messages": [{"role": "system", "content": "You are plants Reporting Analyst\n. + You''re a meticulous analyst with a keen eye for detail. You''re known for your + ability to turn complex data into clear and concise reports, making it easy + for others to understand and act on the information you provide.\n\nYour personal + goal is: Create detailed reports based on plants data analysis and research + findings\n\nTo give my best complete final answer to the task respond using + the exact following format:\n\nThought: I now can give a great answer\nFinal + Answer: Your final answer must be the great and the most complete as possible, + it must be outcome described.\n\nI MUST use these formats, my job depends on + it!"}, {"role": "user", "content": "\nCurrent Task: Review the context you got + and expand each topic into a full section for a report. Make sure the report + is detailed and contains any and all relevant information.\n\n\nThis is the + expected criteria for your final answer: A fully fledge reports with the mains + topics, each with a full section of information. Formatted as markdown without + ''```''\n\nyou MUST return the actual complete content as the final answer, + not a summary.\n\nThis is the context you''re working with:\ngood result\n\nBegin! + This is VERY important to you, use the tools available and give your best Final + Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o-mini", "stop": + ["\nObservation:"]}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1427' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.68.2 + x-stainless-arch: + - arm64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.68.2 + x-stainless-raw-response: + - 'true' + x-stainless-read-timeout: + - '600.0' + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.9 + method: POST + uri: https://api.openai.com/v1/chat/completions + response: + body: + string: !!binary | + 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 + headers: + CF-RAY: + - 935e882e2d44a672-GRU + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 25 Apr 2025 14:29:32 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + cf-cache-status: + - DYNAMIC + openai-organization: + - crewai-iuxna1 + openai-processing-ms: + - '12958' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-ratelimit-limit-requests: + - '30000' + x-ratelimit-limit-tokens: + - '150000000' + x-ratelimit-remaining-requests: + - '29999' + x-ratelimit-remaining-tokens: + - '149999678' + x-ratelimit-reset-requests: + - 2ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_a16b6b72734b672d38321ca8b5d40ef7 + status: + code: 200 + message: OK version: 1 diff --git a/tests/config/tasks.yaml b/tests/config/tasks.yaml index 88639debb..41f545780 100644 --- a/tests/config/tasks.yaml +++ b/tests/config/tasks.yaml @@ -6,6 +6,7 @@ research_task: expected_output: > A list with 10 bullet points of the most relevant information about {topic} agent: researcher + guardrail: make sure each bullet contains a minimum of 100 words reporting_task: description: > diff --git a/tests/project_test.py b/tests/project_test.py index c07922351..bc27f8b0a 100644 --- a/tests/project_test.py +++ b/tests/project_test.py @@ -1,4 +1,5 @@ from typing import List +from unittest.mock import patch import pytest @@ -142,8 +143,31 @@ def test_agent_function_calling_llm(): ), "agent's function_calling_llm is incorrect" +# VCR could not record the request to localhost from Docker to get it version, so we need to mock the tool. +# TODO: We can remove this mock after some issue such as https://github.com/kevin1024/vcrpy/issues/519 been addressed +@pytest.fixture +def code_interpreter_tool_mock(): + with patch( + "crewai_tools.tools.code_interpreter_tool.code_interpreter_tool.CodeInterpreterTool._run", + return_value="(True, 'good result')", + ): + yield + + +def test_task_guardrail(code_interpreter_tool_mock): + crew = InternalCrew() + research_task = crew.research_task() + assert ( + research_task.guardrail + == "make sure each bullet contains a minimum of 100 words" + ) + + reporting_task = crew.reporting_task() + assert reporting_task.guardrail is None + + @pytest.mark.vcr(filter_headers=["authorization"]) -def test_before_kickoff_modification(): +def test_before_kickoff_modification(code_interpreter_tool_mock): crew = InternalCrew() inputs = {"topic": "LLMs"} result = crew.crew().kickoff(inputs=inputs) @@ -151,7 +175,7 @@ def test_before_kickoff_modification(): @pytest.mark.vcr(filter_headers=["authorization"]) -def test_after_kickoff_modification(): +def test_after_kickoff_modification(code_interpreter_tool_mock): crew = InternalCrew() # Assuming the crew execution returns a dict result = crew.crew().kickoff({"topic": "LLMs"}) @@ -162,14 +186,14 @@ def test_after_kickoff_modification(): @pytest.mark.vcr(filter_headers=["authorization"]) -def test_before_kickoff_with_none_input(): +def test_before_kickoff_with_none_input(code_interpreter_tool_mock): crew = InternalCrew() crew.crew().kickoff(None) # Test should pass without raising exceptions @pytest.mark.vcr(filter_headers=["authorization"]) -def test_multiple_before_after_kickoff(): +def test_multiple_before_after_kickoff(code_interpreter_tool_mock): @CrewBase class MultipleHooksCrew: agents: List[BaseAgent]