FinanceAgent¶
Helm chart for deploying FinanceAgent example. It demonstrates how agent works, using prepared data and questions. See FinanceAgent Overview for the details.
FinanceAgent depends on the following subcharts:
Check the Chart.yaml file for how these subcharts are used.
Agent usually requires larger models to perform better, we used meta-llama/Llama-3.3-70B-Instruct
for test, which requires 4x Gaudi devices for local deployment.
Deploy¶
The Deployment includes downloading tools and prompts for the agents, and data ingestion for testing.
Prerequisites¶
A volume is required to put tools and prompts used by agent.
We’ll use hostPath in this README, which is convenient for single worker node deployment. PVC is recommended in a bigger cluster. If you want to use a PVC, comment out the toolHostPath
and replace with toolPVC
in the values.yaml
.
Create the directory /mnt/tools/financeagent
in the worker node, which is the default in values.yaml
. We use the same directory for all 3 agents for easy configuration.
sudo mkdir /mnt/tools/financeagent
sudo chmod 777 /mnt/tools/financeagent
Download prompts, tools and the configuration to /mnt/tools/financeagent
# prompts used by 3 agents
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/prompts/finqa_prompt.py -O /mnt/tools/financeagent/finqa_prompt.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/prompts/research_prompt.py -O /mnt/tools/financeagent/research_prompt.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/prompts/supervisor_prompt.py -O /mnt/tools/financeagent/supervisor_prompt.py
# tools and configurations used by the agents
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/finqa_agent_tools.yaml -O /mnt/tools/financeagent/finqa_agent_tools.yaml
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/finqa_tools.py -O /mnt/tools/financeagent/finqa_tools.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/research_agent_tools.yaml -O /mnt/tools/financeagent/research_agent_tools.yaml
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/research_tools.py -O /mnt/tools/financeagent/research_tools.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/supervisor_agent_tools.yaml -O /mnt/tools/financeagent/supervisor_agent_tools.yaml
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/supervisor_tools.py -O /mnt/tools/financeagent/supervisor_tools.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/sum_agent_tools.py -O /mnt/tools/financeagent/sum_agent_tools.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/redis_kv.py -O /mnt/tools/financeagent/redis_kv.py
wget https://raw.githubusercontent.com/opea-project/GenAIExamples/refs/heads/main/FinanceAgent/tools/utils.py -O /mnt/tools/financeagent/utils.py
Deploy with Helm chart¶
Deploy everything on Gaudi enabled Kubernetes cluster:
If you want to try with latest version, use helm pull oci://ghcr.io/opea-project/charts/financeagent --version 0-latest --untar
export HUGGINGFACEHUB_API_TOKEN="YourOwnToken"
export FINNHUB_API_KEY="YourOwnToken"
export FINANCIAL_DATASETS_API_KEY="YourOwnToken"
helm pull oci://ghcr.io/opea-project/charts/financeagent --untar
helm install financeagent financeagent -f financeagent/gaudi-values.yaml \
--set global.HUGGINGFACEHUB_API_TOKEN=${HUGGINGFACEHUB_API_TOKEN} \
--set research-agent.FINNHUB_API_KEY=${FINNHUB_API_KEY} \
--set research-agent.FINANCIAL_DATASETS_API_KEY=${FINANCIAL_DATASETS_API_KEY}
Verify¶
To verify the installation, run the command kubectl get pod
to make sure all pods are running.
Ingest data for RAG¶
Ingest data used by RAG.
ip_address=$(kubectl get svc financeagent-data-prep -o jsonpath='{.spec.clusterIP})
curl "http://${ip_address}:6007/v1/dataprep/ingest" -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d 'link_list=%5B%22https%3A%2F%2Fwww.fool.com%2Fearnings%2Fcall-transcripts%2F2025%2F03%2F06%2Fcostco-wholesale-cost-q2-2025-earnings-call-transc%2F%22%2C%22https%3A%2F%2Fwww.fool.com%2Fearnings%2Fcall-transcripts%2F2025%2F03%2F07%2Fgap-gap-q4-2024-earnings-call-transcript%2F%22%5D'
Verify the workload through curl command¶
Run the command kubectl port-forward svc/financeagent-supervisor 9090:9090
to expose the service for access.
Open another terminal and run the following command to verify the service if working:
curl http://localhost:9090/v1/chat/completions \
-X POST \
-H "Content-Type: application/json" \
-d '{"role": "user", "messages": "Can you summarize Costco 2025 Q2 earnings call?"}'