Skip to content

Add support for Weave evaluation #264

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: develop
Choose a base branch
from

Conversation

ayulockin
Copy link
Contributor

Description

This PR adds the ability to run evaluations such that the traces and evaluation scores are logged to W&B Weave. This allows for comparing evaluations, debugging evaluations, etc.

By Submitting this PR I confirm:

  • I am familiar with the Contributing Guidelines.
  • We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
    • Any contribution which contains commits that are not Signed-Off will not be accepted.
  • When the PR is ready for review, new or existing tests cover these changes.
  • When the PR is ready for review, the documentation is up to date with these changes.

Signed-off-by: ayulockin <[email protected]>
Copy link

copy-pr-bot bot commented May 14, 2025

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@mdemoret-nv mdemoret-nv added feature request New feature or request non-breaking Non-breaking change labels May 29, 2025
Copy link
Contributor

@AnuradhaKaruppiah AnuradhaKaruppiah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this super cool contribution @ayulockin

@ayulockin
Copy link
Contributor Author

Also can you pls clarify what the perf overhead is for having this trace enabled (beyond the weave cost)?

This is without weave turned on:

aiq eval --config_file=examples/simple/configs/eval_config_weave.yml 6.24s user 5.29s system 41% cpu 27.776 total

This is with weave enabled:

aiq eval --config_file=examples/simple/configs/eval_config_weave.yml 9.25s user 5.90s system 45% cpu 33.171 total

Note that this comparison is done only on 5 examples but definitely there is some performance overhead introduced when weave is turned on.

@@ -16,6 +16,11 @@

general:
use_uvloop: true
telemetry:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: remove this file later

Comment on lines +11 to +26
def _unraisable_hook(unraisable):
# This is a workaround to avoid some weird concurrency issues
# the result of which is that we see ugly tracebacks on program exit.
# We are still investigating the root cause of this issue.
err = unraisable.exc_value
msg = str(err)
# drop both GeneratorExit–related and CancelScope–related noise
if isinstance(err, RuntimeError) and (
"async generator ignored GeneratorExit" in msg
or "Attempted to exit cancel scope" in msg
or "unknown async library, or not in async context" in msg
):
return
sys.__unraisablehook__(unraisable)

sys.unraisablehook = _unraisable_hook
Copy link
Contributor Author

@ayulockin ayulockin May 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I run aiq eval --config_file=examples/simple/configs/eval_config_weave.yml by commenting out line 26, I get the following traceback:

stdout: ``` 2025-05-30 15:11:05,748 - aiq.eval.evaluate - INFO - Starting evaluation run with config file: examples/simple/configs/eval_config_weave.yml 2025-05-30 15:11:06,193 - aiq.runtime.loader - WARNING - Loading module 'aiq.agent.register' from entry point 'aiq_agents' took a long time (199.633837 ms). Ensure all imports are inside your registered functions. 2025-05-30 15:11:06,499 - aiq.eval.evaluate - INFO - Cleaning up output directory .tmp/aiq/examples/simple 2025-05-30 15:11:06,565 - gql.transport.requests - INFO - >>> {"query": "query DefaultEntity {\n viewer {\n username\n defaultEntity {\n name\n }\n }\n}"} 2025-05-30 15:11:06,978 - gql.transport.requests - INFO - <<< {"data":{"viewer":{"username":"ayut","defaultEntity":{"name":"ayut"}}}} 2025-05-30 15:11:10,862 - gql.transport.requests - INFO - >>> {"query": "query DefaultEntity {\n viewer {\n username\n defaultEntity {\n name\n }\n }\n}"} 2025-05-30 15:11:11,263 - gql.transport.requests - INFO - <<< {"data":{"viewer":{"username":"ayut","defaultEntity":{"name":"ayut"}}}} weave: Logged in as Weights & Biases user: ayut. weave: View Weave data at https://wandb.ai/ayut/aiqtoolkit-eval/weave 2025-05-30 15:11:12,114 - weave.trace.init_message - INFO - Logged in as Weights & Biases user: ayut. View Weave data at https://wandb.ai/ayut/aiqtoolkit-eval/weave 2025-05-30 15:11:12,138 - aiq.profiler.utils - WARNING - Discovered frameworks: {} in function webquery_tool by inspecting source. It is recommended and more reliable to instead add the used LLMFrameworkEnum types in the framework_wrappers argument when calling @register_function. 2025-05-30 15:11:12,149 - langchain_community.utils.user_agent - WARNING - USER_AGENT environment variable not set, consider setting it to identify your requests. 2025-05-30 15:11:12,163 - aiq_simple.register - INFO - Generating docs for the webpage: https://docs.smith.langchain.com Fetching pages: 100%|################################################################################| 1/1 [00:00<00:00, 3.68it/s] 2025-05-30 15:11:13,055 - faiss.loader - INFO - Loading faiss. 2025-05-30 15:11:13,092 - faiss.loader - INFO - Successfully loaded faiss. Running workflow: 0%| | 0/5 [00:00 to , which may lead to unintended conversions. Consider adding a direct converter from to to ensure correctness. Running workflow: 20%|███████████████▌ | 1/5 [00:04<00:16, 4.15s/it]Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 457, in __exit__ raise RuntimeError( RuntimeError: Attempted to exit cancel scope in a different task than it was entered in Running workflow: 40%|███████████████████████████████▏ | 2/5 [00:04<00:05, 1.83s/it]Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 340, in __aiter__ with AsyncShieldCancellation(): ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 203, in __init__ self._backend = current_async_library() ^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 30, in current_async_library environment = sniffio.current_async_library() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/sniffio/_impl.py", line 93, in current_async_library raise AsyncLibraryNotFoundError( sniffio._impl.AsyncLibraryNotFoundError: unknown async library, or not in async context Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 406, in __aiter__ await self.aclose() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 412, in aclose with AsyncShieldCancellation(): ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 203, in __init__ self._backend = current_async_library() ^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 30, in current_async_library environment = sniffio.current_async_library() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/sniffio/_impl.py", line 93, in current_async_library raise AsyncLibraryNotFoundError( sniffio._impl.AsyncLibraryNotFoundError: unknown async library, or not in async context Running workflow: 100%|██████████████████████████████████████████████████████████████████████████████| 5/5 [00:06<00:00, 1.29s/it] Evaluating Ragas nv_accuracy: 0%| | 0/5 [00:00 | 1/5 [00:00<00:03, 1.11it/s] Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 404, in __aiter__ yield part RuntimeError: async generator ignored GeneratorExit Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose 2025-05-30 15:11:22,044 - openai._base_client - INFO - Retrying request to /chat/completions in 0.441259 seconds await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Exception ignored in: Traceback (most recent call last): File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 348, in aclose await self._connection._response_closed() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 239, in _response_closed async with self._state_lock: ^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/httpcore/_synchronization.py", line 77, in __aenter__ await self._anyio_lock.acquire() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1799, in acquire await AsyncIOBackend.cancel_shielded_checkpoint() File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2349, in cancel_shielded_checkpoint with CancelScope(shield=True): ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/ayushthakur/integrations/aiq/AIQToolkit/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 456, in __exit__ if current_task() is not self._host_task: ^^^^^^^^^^^^^^ RuntimeError: no running event loop Evaluating Ragas nv_context_relevance: 100%|█████████████████████████████████████████████████████████| 5/5 [00:03<00:00, 1.46it/s] Evaluating Ragas nv_response_groundedness: 100%|█████████████████████████████████████████████████████| 5/5 [00:04<00:00, 1.17it/s] Evaluating Ragas nv_accuracy: 100%|██████████████████████████████████████████████████████████████████| 5/5 [00:08<00:00, 1.77s/it] Evaluating Trajectory: 100%|█████████████████████████████████████████████████████████████████████████| 5/5 [00:07<00:00, 1.53s/it] 2025-05-30 15:11:29,512 - aiq.profiler.profile_runner - INFO - Wrote combined data to: .tmp/aiq/examples/simple/all_requests_profiler_traces.jsonjectory: 20%|██████████████▌ | 1/5 [00:05<00:21, 5.39s/it] 2025-05-30 15:11:29,578 - aiq.profiler.profile_runner - INFO - Wrote merged standardized DataFrame to .tmp/aiq/examples/simple/standardized_data_all.csv 2025-05-30 15:11:29,639 - aiq.profiler.profile_runner - INFO - Wrote inference optimization results to: .tmp/aiq/examples/simple/inference_optimization.json 2025-05-30 15:11:29,936 - aiq.profiler.profile_runner - INFO - Nested stack analysis complete 2025-05-30 15:11:29,954 - aiq.profiler.profile_runner - INFO - Concurrency spike analysis complete 2025-05-30 15:11:29,955 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling report to: .tmp/aiq/examples/simple/workflow_profiling_report.txt 2025-05-30 15:11:29,956 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling metrics to: .tmp/aiq/examples/simple/workflow_profiling_metrics.json 2025-05-30 15:11:29,959 - aiq.eval.evaluate - INFO - Workflow output written to .tmp/aiq/examples/simple/workflow_output.json 2025-05-30 15:11:29,960 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple/rag_relevance_output.json 2025-05-30 15:11:29,960 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple/rag_groundedness_output.json 2025-05-30 15:11:29,960 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple/rag_accuracy_output.json 2025-05-30 15:11:29,961 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple/trajectory_accuracy_output.json 2025-05-30 15:11:29,961 - aiq.eval.utils.output_uploader - INFO - No S3 config provided; skipping upload. ```

Right now I am using this hack to suppress tracebacks. These tracebacks are non-blocking i.e, the evaluation runs to completion and everything is correctly logged to Weave.

This integration took only a days work but I had spent a lot of time already to find root cause of the tracebacks I am seeing. Just thought of looping you all in.

@ayulockin ayulockin marked this pull request as ready for review May 30, 2025 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request non-breaking Non-breaking change
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants