chore: import upstream snapshot with attribution
Deploy Documentation / deploy (push) Has been cancelled
CPU Test / Test (Utilities, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (LLM proxy, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Others, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Store, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Utilities, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Weave, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (AgentOps, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (LLM proxy, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Others, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Weave, latest, Python 3.13) (push) Has been cancelled
Dashboard / Chromatic (push) Has been cancelled
CPU Test / Lint - fast (push) Has been cancelled
CPU Test / Lint - next (push) Has been cancelled
CPU Test / Lint - slow (push) Has been cancelled
CPU Test / Lint - JavaScript (push) Has been cancelled
CPU Test / Build documentation (push) Has been cancelled
CPU Test / Test (AgentOps, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (LLM proxy, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (Others, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (Store, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (Weave, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (AgentOps, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Store, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Utilities, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Weave, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (AgentOps, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (LLM proxy, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (Others, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (Store, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (Utilities, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (JavaScript) (push) Has been cancelled
Deploy Documentation / deploy (push) Has been cancelled
CPU Test / Test (Utilities, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (LLM proxy, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Others, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Store, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Utilities, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Weave, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (AgentOps, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (LLM proxy, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Others, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Weave, latest, Python 3.13) (push) Has been cancelled
Dashboard / Chromatic (push) Has been cancelled
CPU Test / Lint - fast (push) Has been cancelled
CPU Test / Lint - next (push) Has been cancelled
CPU Test / Lint - slow (push) Has been cancelled
CPU Test / Lint - JavaScript (push) Has been cancelled
CPU Test / Build documentation (push) Has been cancelled
CPU Test / Test (AgentOps, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (LLM proxy, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (Others, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (Store, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (Weave, legacy, Python 3.10) (push) Has been cancelled
CPU Test / Test (AgentOps, stable, Python 3.11) (push) Has been cancelled
CPU Test / Test (Store, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Utilities, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (Weave, stable, Python 3.12) (push) Has been cancelled
CPU Test / Test (AgentOps, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (LLM proxy, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (Others, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (Store, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (Utilities, latest, Python 3.13) (push) Has been cancelled
CPU Test / Test (JavaScript) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
"""Debugging helpers for the ChartQA agent.
|
||||
|
||||
Example usage for OpenAI API:
|
||||
|
||||
```bash
|
||||
python debug_chartqa_agent.py
|
||||
```
|
||||
|
||||
Example usage for self-hosted model.
|
||||
|
||||
```
|
||||
vllm serve Qwen/Qwen2-VL-2B-Instruct \
|
||||
--gpu-memory-utilization 0.6 \
|
||||
--max-model-len 4096 \
|
||||
--allowed-local-media-path $CHARTQA_DATA_DIR \
|
||||
--enable-prefix-caching \
|
||||
--port 8088
|
||||
USE_LLM_PROXY=1 OPENAI_API_BASE=http://localhost:8088/v1 OPENAI_MODEL=Qwen/Qwen2-VL-2B-Instruct python debug_chartqa_agent.py
|
||||
```
|
||||
|
||||
Ensure `CHARTQA_DATA_DIR` points to a directory with the prepared parquet file by running `python prepare_data.py` beforehand.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import Any, Dict, List, cast
|
||||
|
||||
import env_var as chartqa_env_var
|
||||
import pandas as pd
|
||||
from chartqa_agent import ChartQAAgent
|
||||
|
||||
import agentlightning as agl
|
||||
|
||||
logger = logging.getLogger("chartqa_agent")
|
||||
|
||||
|
||||
def create_llm_proxy_for_chartqa(vllm_endpoint: str, port: int = 8081) -> agl.LLMProxy:
|
||||
"""Create an LLMProxy configured for ChartQA with token ID capture.
|
||||
|
||||
Args:
|
||||
vllm_endpoint: Base URL for the hosted vLLM server.
|
||||
port: Local port where the proxy should listen.
|
||||
|
||||
Returns:
|
||||
An [`LLMProxy`][agentlightning.LLMProxy] instance launched in a thread.
|
||||
"""
|
||||
store = agl.LightningStoreThreaded(agl.InMemoryLightningStore())
|
||||
|
||||
llm_proxy = agl.LLMProxy(
|
||||
port=port,
|
||||
store=store,
|
||||
model_list=[
|
||||
{
|
||||
"model_name": "Qwen/Qwen2-VL-2B-Instruct",
|
||||
"litellm_params": {
|
||||
"model": "hosted_vllm/Qwen/Qwen2-VL-2B-Instruct",
|
||||
"api_base": vllm_endpoint,
|
||||
},
|
||||
}
|
||||
],
|
||||
callbacks=["return_token_ids"],
|
||||
launch_mode="thread",
|
||||
)
|
||||
|
||||
return llm_proxy
|
||||
|
||||
|
||||
def debug_chartqa_agent(use_llm_proxy: bool = False) -> None:
|
||||
"""Debug the ChartQA agent against cloud APIs or a local vLLM proxy.
|
||||
|
||||
Args:
|
||||
use_llm_proxy: When `True`, spin up an LLMProxy that points to a local vLLM endpoint.
|
||||
|
||||
Raises:
|
||||
FileNotFoundError: If the prepared ChartQA parquet file is missing.
|
||||
"""
|
||||
test_data_path = os.path.join(chartqa_env_var.CHARTQA_DATA_DIR, "test_chartqa.parquet")
|
||||
|
||||
if not os.path.exists(test_data_path):
|
||||
raise FileNotFoundError(f"Test data file {test_data_path} does not exist. Please run prepare_data.py first.")
|
||||
|
||||
df = pd.read_parquet(test_data_path).head(10) # type: ignore
|
||||
test_data = cast(List[Dict[str, Any]], df.to_dict(orient="records")) # type: ignore
|
||||
|
||||
model = chartqa_env_var.OPENAI_MODEL
|
||||
endpoint = chartqa_env_var.OPENAI_API_BASE
|
||||
logger.info(
|
||||
"Debug data: %s samples, model: %s, endpoint: %s, llm_proxy=%s",
|
||||
len(test_data),
|
||||
model,
|
||||
endpoint,
|
||||
use_llm_proxy,
|
||||
)
|
||||
|
||||
llm_endpoint = endpoint
|
||||
trainer_kwargs: Dict[str, Any] = {}
|
||||
|
||||
if use_llm_proxy:
|
||||
proxy_port = 8089
|
||||
llm_proxy = create_llm_proxy_for_chartqa(endpoint, port=proxy_port)
|
||||
trainer_kwargs["llm_proxy"] = llm_proxy
|
||||
trainer_kwargs["n_workers"] = 2
|
||||
llm_endpoint = f"http://localhost:{proxy_port}/v1"
|
||||
agent = ChartQAAgent()
|
||||
else:
|
||||
trainer_kwargs["n_workers"] = 1
|
||||
agent = ChartQAAgent(use_base64_images=True)
|
||||
|
||||
trainer = agl.Trainer(
|
||||
initial_resources={
|
||||
"main_llm": agl.LLM(
|
||||
endpoint=llm_endpoint,
|
||||
model=model,
|
||||
sampling_parameters={"temperature": 0.0},
|
||||
)
|
||||
},
|
||||
**trainer_kwargs,
|
||||
)
|
||||
|
||||
trainer.dev(agent, test_data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
agl.setup_logging(apply_to=["chartqa_agent"])
|
||||
debug_chartqa_agent(use_llm_proxy=chartqa_env_var.USE_LLM_PROXY)
|
||||
Reference in New Issue
Block a user