From 8ff6f815edb07457fc19ae51e37dec28b3b77b35 Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Wed, 12 Mar 2025 00:06:23 +0000 Subject: [PATCH 01/20] set up structure for FinanceAgent example Signed-off-by: minmin-intel --- FinanceAgent/README.md | 0 .../intel/hpu/gaudi/compose.yaml | 95 +++++++++++++++++++ FinanceAgent/docker_image_build/build.yaml | 19 ++++ FinanceAgent/prompts/finqa_prompt.py | 37 ++++++++ FinanceAgent/prompts/supervisor_prompt.py | 31 ++++++ FinanceAgent/tools/finqa_agent_tools.yaml | 0 FinanceAgent/tools/research_agent_tools.yaml | 0 .../tools/supervisor_agent_tools.yaml | 0 8 files changed, 182 insertions(+) create mode 100644 FinanceAgent/README.md create mode 100644 FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml create mode 100644 FinanceAgent/docker_image_build/build.yaml create mode 100644 FinanceAgent/prompts/finqa_prompt.py create mode 100644 FinanceAgent/prompts/supervisor_prompt.py create mode 100644 FinanceAgent/tools/finqa_agent_tools.yaml create mode 100644 FinanceAgent/tools/research_agent_tools.yaml create mode 100644 FinanceAgent/tools/supervisor_agent_tools.yaml diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml new file mode 100644 index 0000000000..2f3a4fafce --- /dev/null +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -0,0 +1,95 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +services: + worker-finqa-agent: + image: opea/agent:latest + container_name: finqa-agent-endpoint + volumes: + - ${TOOLSET_PATH}:/home/user/tools/ + - ${PROMPT_PATH}:/home/user/prompts/ + ports: + - "9095:9095" + ipc: host + environment: + ip_address: ${ip_address} + strategy: react_llama + with_memory: false + recursion_limit: ${recursion_limit_worker} + llm_engine: vllm + HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} + llm_endpoint_url: ${LLM_ENDPOINT_URL} + model: ${LLM_MODEL_ID} + temperature: ${temperature} + max_new_tokens: ${max_new_tokens} + stream: false + tools: /home/user/tools/finqa_agent_tools.yaml + custom_prompt: /home/user/prompts/finqa_prompt.py + require_human_feedback: false + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + port: 9095 + + worker-research-agent: + image: opea/agent:latest + container_name: research-agent-endpoint + volumes: + - ${TOOLSET_PATH}:/home/user/tools/ + - ${PROMPT_PATH}:/home/user/prompts/ + ports: + - "9096:9096" + ipc: host + environment: + ip_address: ${ip_address} + strategy: react_llama + with_memory: false + recursion_limit: ${recursion_limit_worker} + llm_engine: vllm + HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} + llm_endpoint_url: ${LLM_ENDPOINT_URL} + model: ${LLM_MODEL_ID} + temperature: ${temperature} + max_new_tokens: ${max_new_tokens} + stream: false + tools: /home/user/tools/research_agent_tools.yaml + custom_prompt: /home/user/prompts/research_prompt.py + require_human_feedback: false + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + port: 9096 + + supervisor-react-agent: + image: opea/agent:latest + container_name: supervisor-agent-endpoint + depends_on: + - worker-finqa-agent + - worker-research-agent + volumes: + - ${TOOLSET_PATH}:/home/user/tools/ + - ${PROMPT_PATH}:/home/user/prompts/ + ports: + - "9090:9090" + ipc: host + environment: + ip_address: ${ip_address} + strategy: react_llama + with_memory: true + recursion_limit: ${recursion_limit_supervisor} + llm_engine: vllm + HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} + llm_endpoint_url: ${LLM_ENDPOINT_URL} + model: ${LLM_MODEL_ID} + temperature: ${temperature} + max_new_tokens: ${max_new_tokens} + stream: true + tools: /home/user/tools/supervisor_agent_tools.yaml + custom_prompt: /home/user/prompts/supervisor_prompt.py + require_human_feedback: false + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + WORKER_FINQA_AGENT_URL: $WORKER_FINQA_AGENT_URL + WORKER_RESEARCH_AGENT_URL: $WORKER_RESEARCH_AGENT_URL + port: 9090 diff --git a/FinanceAgent/docker_image_build/build.yaml b/FinanceAgent/docker_image_build/build.yaml new file mode 100644 index 0000000000..723a61c873 --- /dev/null +++ b/FinanceAgent/docker_image_build/build.yaml @@ -0,0 +1,19 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +services: + agent: + build: + context: GenAIComps + dockerfile: comps/agent/src/Dockerfile + args: + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + no_proxy: ${no_proxy} + image: ${REGISTRY:-opea}/agent:${TAG:-latest} + agent-ui: + build: + context: ../ui + dockerfile: ./docker/Dockerfile + extends: agent + image: ${REGISTRY:-opea}/agent-ui:${TAG:-latest} diff --git a/FinanceAgent/prompts/finqa_prompt.py b/FinanceAgent/prompts/finqa_prompt.py new file mode 100644 index 0000000000..877aa342ed --- /dev/null +++ b/FinanceAgent/prompts/finqa_prompt.py @@ -0,0 +1,37 @@ +REACT_AGENT_LLAMA_PROMPT = """\ +You are a helpful assistant engaged in multi-turn conversations with Financial analysts. +You have access to the following two tools: +{tools} + +**Procedure:** +1. Read the question carefully. Divide the question into sub-questions and conquer sub-questions one by one. +3. If there is execution history, read it carefully and reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. + +**Output format:** +You should output your thought process. Finish thinking first. Output tool calls or your answer at the end. +When making tool calls, you should use the following format: +TOOL CALL: {{"tool": "tool1", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} + +If you can answer the question, provide the answer in the following format: +FINAL ANSWER: {{"answer": "your answer here"}} + + +======= Conversations with user in previous turns ======= +{thread_history} +======= End of previous conversations ======= + +======= Your execution History in this turn ========= +{history} +======= End of execution history ========== + +**Tips:** +* You may need to do multi-hop calculations and call tools multiple times to get an answer. +* Do not assume any financial figures. Always rely on the tools to get the factual information. +* If you need a certain financial figure, search for the figure instead of the financial statement name. +* If you did not get the answer at first, do not give up. Reflect on the steps that you have taken and try a different way. Think out of the box. You hard work will be rewarded. +* Give concise, factual and relevant answers. +* If the user question is too ambiguous, ask for clarification. + +Now take a deep breath and think step by step to answer user's question in this turn. +USER MESSAGE: {input} +""" diff --git a/FinanceAgent/prompts/supervisor_prompt.py b/FinanceAgent/prompts/supervisor_prompt.py new file mode 100644 index 0000000000..cf5883da80 --- /dev/null +++ b/FinanceAgent/prompts/supervisor_prompt.py @@ -0,0 +1,31 @@ +REACT_AGENT_LLAMA_PROMPT = """\ +You are a helpful assistant engaged in multi-turn conversations with users. +You have the following worker agents working for you. You can call them as calling tools. +{tools} + +**Procedure:** +1. Read the question carefully. Decide which agent you should call to answer the question. +2. The worker agents need detailed inputs. Ask the user to clarify when you lack certain info or are uncertain about something. Do not assume anything. For example, user asks about "recent earnings call of Microsoft", ask the user to specify the quarter and year. +3. Read the execution history if any to understand the worker agents that have been called and the information that has been gathered. +4. Reason about the information gathered so far and decide if you can answer the question or if you need to gather more info. + +**Output format:** +You should output your thought process. Finish thinking first. Output tool calls or your answer at the end. +When calling worker agents, you should use the following tool-call format: +TOOL CALL: {{"tool": "tool1", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} +TOOL CALL: {{"tool": "tool2", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} + +If you can answer the question, provide the answer in the following format: +FINAL ANSWER: {{"answer": "your answer here"}} + +======= Conversations with user in previous turns ======= +{thread_history} +======= End of previous conversations ======= + +======= Your execution History in this turn ========= +{history} +======= End of execution history ========== + +Now take a deep breath and think step by step to answer user's question in this turn. +USER MESSAGE: {input} +""" diff --git a/FinanceAgent/tools/finqa_agent_tools.yaml b/FinanceAgent/tools/finqa_agent_tools.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/FinanceAgent/tools/research_agent_tools.yaml b/FinanceAgent/tools/research_agent_tools.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/FinanceAgent/tools/supervisor_agent_tools.yaml b/FinanceAgent/tools/supervisor_agent_tools.yaml new file mode 100644 index 0000000000..e69de29bb2 From edfafe7fd9b753ad5fb5ea5bd4c2d943a62c1121 Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Wed, 12 Mar 2025 19:07:58 +0000 Subject: [PATCH 02/20] add tools and readme Signed-off-by: minmin-intel --- FinanceAgent/README.md | 57 +++ FinanceAgent/docker_image_build/build.yaml | 9 + FinanceAgent/tests/test.py | 91 +++++ FinanceAgent/tests/test_compose_on_gaudi.sh | 0 FinanceAgent/tools/finqa_agent_tools.yaml | 17 + FinanceAgent/tools/finqa_tools.py | 90 +++++ FinanceAgent/tools/redis_kv.py | 146 ++++++++ .../tools/supervisor_agent_tools.yaml | 26 ++ FinanceAgent/tools/supervisor_tools.py | 25 ++ FinanceAgent/tools/utils.py | 343 ++++++++++++++++++ 10 files changed, 804 insertions(+) create mode 100644 FinanceAgent/tests/test.py create mode 100644 FinanceAgent/tests/test_compose_on_gaudi.sh create mode 100644 FinanceAgent/tools/finqa_tools.py create mode 100644 FinanceAgent/tools/redis_kv.py create mode 100644 FinanceAgent/tools/supervisor_tools.py create mode 100644 FinanceAgent/tools/utils.py diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index e69de29bb2..d6d1007997 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -0,0 +1,57 @@ +# Finance Agent +## 1. Overview + + +## 2. Getting started +### 2.1 Dowload repos +```bash +mkdir /path/to/your/workspace/ +export WORKDIR=/path/to/your/workspace/ +genaicomps +genaiexamples +``` +### 2.2 Set up env vars +```bash +export HF_CACHE_DIR=/path/to/your/model/cache/ +export HF_TOKEN= + +``` + +### 2.3 Build docker images +Build docker images for dataprep, agent, agent-ui. +```bash +# use docker image build +``` + +If deploy on Gaudi, also need to build vllm image. +```bash +cd $WORKDIR +git clone https://github.com/HabanaAI/vllm-fork.git +# get the latest release tag of vllm gaudi +VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") +echo "Check out vLLM tag ${VLLM_VER}" +git checkout ${VLLM_VER} +docker build --no-cache -f Dockerfile.hpu -t opea/vllm-gaudi:latest --shm-size=128g . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy +``` + +## 3. Deploy with docker compose +### 3.1 Launch vllm endpoint +Below is the command to launch a vllm endpoint on Gaudi that serves `meta-llama/Llama-3.3-70B-Instruct` model on 4 Gaudi cards. +```bash +export vllm_port=8086 +export vllm_volume=$HF_CACHE_DIR +export max_length=16384 +export model="meta-llama/Llama-3.3-70B-Instruct" +docker run -d --runtime=habana --rm --name "vllm-gaudi-server" -e HABANA_VISIBLE_DEVICES=all -p $vllm_port:8000 -v $vllm_volume:/data -e HF_TOKEN=$HF_TOKEN -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN -e HF_HOME=/data -e OMPI_MCA_btl_vader_single_copy_mechanism=none -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e http_proxy=$http_proxy -e https_proxy=$https_proxy -e no_proxy=$no_proxy -e VLLM_SKIP_WARMUP=true --cap-add=sys_nice --ipc=host opea/vllm-gaudi:comps --model ${model} --max-seq-len-to-capture $max_length --tensor-parallel-size 4 +``` +### 3.2 Prepare knowledge base +The commands below will upload some example files into the knowledge base. You can also upload files through UI. + +First, launch the redis databases and the dataprep microservice. +```bash + +``` + +### 3.3 Launch the multi-agent system +### 3.4 Validate agents + diff --git a/FinanceAgent/docker_image_build/build.yaml b/FinanceAgent/docker_image_build/build.yaml index 723a61c873..ac0d56dc4d 100644 --- a/FinanceAgent/docker_image_build/build.yaml +++ b/FinanceAgent/docker_image_build/build.yaml @@ -2,6 +2,15 @@ # SPDX-License-Identifier: Apache-2.0 services: + dataprep: + build: + context: GenAIComps + dockerfile: comps/dataprep/src/Dockerfile + args: + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + no_proxy: ${no_proxy} + image: ${REGISTRY:-opea}/dataprep:${TAG:-latest} agent: build: context: GenAIComps diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py new file mode 100644 index 0000000000..2f0bbd557f --- /dev/null +++ b/FinanceAgent/tests/test.py @@ -0,0 +1,91 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import argparse +import json +import uuid + +import requests + + +def process_request(url, query, is_stream=False): + proxies = {"http": ""} + content = json.dumps(query) if query is not None else None + try: + resp = requests.post(url=url, data=content, proxies=proxies, stream=is_stream) + if not is_stream: + ret = resp.json()["text"] + else: + for line in resp.iter_lines(decode_unicode=True): + print(line) + ret = None + + resp.raise_for_status() # Raise an exception for unsuccessful HTTP status codes + return ret + except requests.exceptions.RequestException as e: + ret = f"An error occurred:{e}" + return None + + +def test_worker_agent(args): + url = f"http://{args.ip_addr}:{args.ext_port}/v1/chat/completions" + query = {"role": "user", "messages": args.prompt, "stream": "false"} + ret = process_request(url, query) + print("Response: ", ret) + + +def add_message_and_run(url, user_message, thread_id, stream=False): + print("User message: ", user_message) + query = {"role": "user", "messages": user_message, "thread_id": thread_id, "stream": stream} + ret = process_request(url, query, is_stream=stream) + print("Response: ", ret) + + +def test_chat_completion_multi_turn(args): + url = f"http://{args.ip_addr}:{args.ext_port}/v1/chat/completions" + thread_id = f"{uuid.uuid4()}" + + # first turn + print("===============First turn==================") + user_message = "Key takeaways of Gap's 2024 Q4 earnings call?" + add_message_and_run(url, user_message, thread_id, stream=args.stream) + print("===============End of first turn==================") + + # second turn + print("===============Second turn==================") + user_message = "What was Gap's forecast for 2025?" + add_message_and_run(url, user_message, thread_id, stream=args.stream) + print("===============End of second turn==================") + +def test_supervisor_agent_single_turn(args): + url = f"http://{args.ip_addr}:{args.ext_port}/v1/chat/completions" + query_list = [ + "What was Gap's revenue growth in 2024?", + "Can you summarize Costco's 2025 Q2 earnings call?", + "Should I increase investment in Costco?", + ] + for query in query_list: + thread_id = f"{uuid.uuid4()}" + add_message_and_run(url, query, thread_id, stream=args.stream) + print("="*50) + + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--ip_addr", type=str, default="127.0.0.1", help="endpoint ip address") + parser.add_argument("--ext_port", type=str, default="9090", help="endpoint port") + parser.add_argument("--stream", action="store_true", help="streaming mode") + parser.add_argument("--prompt", type=str, help="prompt message") + parser.add_argument("--agent_role", type=str, default="supervisor", help="supervisor or worker") + args, _ = parser.parse_known_args() + + print(args) + + if args.agent_role == "supervisor": + test_chat_completion_multi_turn(args) + elif args.agent_role == "worker": + test_worker_agent(args) + else: + raise ValueError("Invalid agent role") diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh new file mode 100644 index 0000000000..e69de29bb2 diff --git a/FinanceAgent/tools/finqa_agent_tools.yaml b/FinanceAgent/tools/finqa_agent_tools.yaml index e69de29bb2..bcc5cfd1c0 100644 --- a/FinanceAgent/tools/finqa_agent_tools.yaml +++ b/FinanceAgent/tools/finqa_agent_tools.yaml @@ -0,0 +1,17 @@ +search_knowledge_base: + description: Search knowledge base of SEC filings. + callable_api: finqa_tools.py:get_context_bm25_llm + args_schema: + query: + type: str + description: the query to search for. Should be detailed. Do not include the company name. + company: + type: str + description: the company of interest. + year: + type: str + description: the year of interest, can only specify one year. can be an empty string. + quarter: + type: str + description: the quarter of interest, can only specify one quarter. can be 'Q1', 'Q2', 'Q3', 'Q4'. can be an empty string. + return_output: retrieved_data \ No newline at end of file diff --git a/FinanceAgent/tools/finqa_tools.py b/FinanceAgent/tools/finqa_tools.py new file mode 100644 index 0000000000..aff31a82ab --- /dev/null +++ b/FinanceAgent/tools/finqa_tools.py @@ -0,0 +1,90 @@ +from utils import * + +def get_context_bm25_llm(query, company, year, quarter = ""): + k = 5 + + company_list = get_company_list() + company = get_company_name_in_kb(company, company_list) + if "Cannot find" in company or "Database is empty" in company: + return company + + print(f"Company: {company}") + # chunks + index_name=f"chunks_{company}" + vector_store = get_vectorstore(index_name) + chunks_bm25 = bm25_search_broad(query, company, year, quarter, k=k, doc_type="chunks") + chunks_sim = similarity_search(vector_store, k, query, company, year, quarter) + chunks = chunks_bm25 + chunks_sim + + # tables + try: + index_name=f"tables_{company}" + vector_store_table = get_vectorstore(index_name) + # get tables matching metadata + tables_bm25 = bm25_search_broad(query, company, year, quarter, k=k, doc_type="tables") + tables_sim = similarity_search(vector_store_table, k, query, company, year, quarter) + tables = tables_bm25 + tables_sim + except: + tables = [] + + # get unique results + context = get_unique_docs(chunks+tables) + print("Context:\n", context) + + if context: + query = f"{query} for {company} in {year} {quarter}" + prompt = ANSWER_PROMPT.format(query=query, documents=context) + response = generate_answer(prompt) + response = parse_response(response) + else: + response = f"No relevant information found for {company} in {year} {quarter}." + return response + + +def search_full_doc(query, company): + company = company.upper() + + # decide if company is in company list + company_list = get_company_list() + company = get_company_name_in_kb(company, company_list) + if "Cannot find" in company or "Database is empty" in company: + return company + + # search most similar doc title + index_name = f"titles_{company}" + vector_store = get_vectorstore_titles(index_name) + k = 1 + docs = vector_store.similarity_search(query, k=k) + if docs: + doc = docs[0] + doc_title = doc.page_content + print(f"Most similar doc title: {doc_title}") + + kvstore= RedisKVStore(redis_uri=REDIS_URL_KV) + doc = kvstore.get(doc_title, f"full_doc_{company}") + content = doc["full_doc"] + doc_length = doc["doc_length"] + print(f"Doc length: {doc_length}") + print(f"Full doc content: {content[:100]}...") + # once summary is done, can save to kvstore + # first delete the old record + # kvstore.delete(doc_title, f"full_doc_{company}") + # then save the new record with summary + # kvstore.put(doc_title, {"full_doc": content, "summary":summary,"doc_length":doc_length, **metadata}, f"full_doc_{company}") + return content + + +if __name__ == "__main__": + company="Gap" + year="2024" + quarter="Q4" + collection_name=f"chunks_{company}" + search_metadata = ("company", company) + + resp = get_context_bm25_llm("revenue", company, year, quarter) + print("***Response:\n", resp) + print("="*50) + + print("testing retrieve full doc") + query = f"{company} {year} {quarter} earning call" + search_full_doc(query, company) \ No newline at end of file diff --git a/FinanceAgent/tools/redis_kv.py b/FinanceAgent/tools/redis_kv.py new file mode 100644 index 0000000000..9f88d02a6b --- /dev/null +++ b/FinanceAgent/tools/redis_kv.py @@ -0,0 +1,146 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import json +from collections import OrderedDict +from typing import Any, Dict, List, Optional, Tuple + +from redis import Redis +from redis.asyncio import Redis as AsyncRedis + +DEFAULT_COLLECTION = "data" +DEFAULT_BATCH_SIZE = 1 + + +class RedisKVStore: + def __init__( + self, + redis_uri: Optional[str] = "redis://127.0.0.1:6379", + **kwargs: Any, + ): + try: + # connect to redis from url + self._redis_client = Redis.from_url(redis_uri, **kwargs) + self._async_redis_client = AsyncRedis.from_url(redis_uri, **kwargs) + except ValueError as e: + raise ValueError(f"Redis failed to connect: {e}") + + def put(self, key: str, val: dict, collection: str = DEFAULT_COLLECTION) -> None: + """Put a key-value pair into the store. + + Args: + key (str): key + val (dict): value + collection (str): collection name + """ + self._redis_client.hset(name=collection, key=key, value=json.dumps(val)) + + async def aput(self, key: str, val: dict, collection: str = DEFAULT_COLLECTION) -> None: + """Put a key-value pair into the store. + + Args: + key (str): key + val (dict): value + collection (str): collection name + """ + await self._async_redis_client.hset(name=collection, key=key, value=json.dumps(val)) + + def put_all( + self, + kv_pairs: List[Tuple[str, dict]], + collection: str = DEFAULT_COLLECTION, + batch_size: int = DEFAULT_BATCH_SIZE, + ) -> None: + """Put a dictionary of key-value pairs into the store. + + Args: + kv_pairs (List[Tuple[str, dict]]): key-value pairs + collection (str): collection name + """ + with self._redis_client.pipeline() as pipe: + cur_batch = 0 + for key, val in kv_pairs: + pipe.hset(name=collection, key=key, value=json.dumps(val)) + cur_batch += 1 + + if cur_batch >= batch_size: + cur_batch = 0 + pipe.execute() + + if cur_batch > 0: + pipe.execute() + + def get(self, key: str, collection: str = DEFAULT_COLLECTION) -> Optional[dict]: + """Get a value from the store. + + Args: + key (str): key + collection (str): collection name + """ + val_str = self._redis_client.hget(name=collection, key=key) + if val_str is None: + return None + return json.loads(val_str) + + async def aget(self, key: str, collection: str = DEFAULT_COLLECTION) -> Optional[dict]: + """Get a value from the store. + + Args: + key (str): key + collection (str): collection name + """ + val_str = await self._async_redis_client.hget(name=collection, key=key) + if val_str is None: + return None + return json.loads(val_str) + + def get_all(self, collection: str = DEFAULT_COLLECTION) -> Dict[str, dict]: + """Get all values from the store.""" + collection_kv_dict = OrderedDict() + for key, val_str in self._redis_client.hscan_iter(name=collection): + value = json.loads(val_str) + collection_kv_dict[key.decode()] = value + return collection_kv_dict + + async def aget_all(self, collection: str = DEFAULT_COLLECTION) -> Dict[str, dict]: + """Get all values from the store.""" + collection_kv_dict = OrderedDict() + async for key, val_str in self._async_redis_client.hscan_iter(name=collection): + value = json.loads(val_str) + collection_kv_dict[key.decode()] = value + return collection_kv_dict + + def delete(self, key: str, collection: str = DEFAULT_COLLECTION) -> bool: + """Delete a value from the store. + + Args: + key (str): key + collection (str): collection name + """ + deleted_num = self._redis_client.hdel(collection, key) + return bool(deleted_num > 0) + + async def adelete(self, key: str, collection: str = DEFAULT_COLLECTION) -> bool: + """Delete a value from the store. + + Args: + key (str): key + collection (str): collection name + """ + deleted_num = await self._async_redis_client.hdel(collection, key) + return bool(deleted_num > 0) + + @classmethod + def from_host_and_port( + cls, + host: str, + port: int, + ): + """Load a RedisPersistence from a Redis host and port. + + Args: + host (str): Redis host + port (int): Redis port + """ + url = f"redis://{host}:{port}".format(host=host, port=port) + return cls(redis_uri=url) \ No newline at end of file diff --git a/FinanceAgent/tools/supervisor_agent_tools.yaml b/FinanceAgent/tools/supervisor_agent_tools.yaml index e69de29bb2..5b8817c5a1 100644 --- a/FinanceAgent/tools/supervisor_agent_tools.yaml +++ b/FinanceAgent/tools/supervisor_agent_tools.yaml @@ -0,0 +1,26 @@ +finqa_agent: + description: answer financial questions about a company. + callable_api: supervisor_tools.py:finqa_agent + args_schema: + query: + type: str + description: should include company name and time, for example, which business unit had the highest growth for Microsoft in 2024. + return_output: retrieved_data + +summarization_agent: + description: generate high-lelvel summary of a financial document. + callable_api: supervisor_tools.py:summarize_doc + args_schema: + doc_title: + type: str + description: the description of the document, should include company name and time, for example, Apple 2023 Q4 earnings call. + return_output: summary + +research_agent: + description: generate research report on a specified company with fundamentals analysis, sentiment analysis and risk analysis. + callable_api: supervisor_tools.py:research_agent + args_schema: + company: + type: str + description: the company name + return_output: report diff --git a/FinanceAgent/tools/supervisor_tools.py b/FinanceAgent/tools/supervisor_tools.py new file mode 100644 index 0000000000..68b9215142 --- /dev/null +++ b/FinanceAgent/tools/supervisor_tools.py @@ -0,0 +1,25 @@ +import requests +import os + +def finqa_agent(query:str): + url = os.environ.get("WORKER_FINQA_AGENT_URL") + print(url) + proxies = {"http": ""} + payload = { + "messages": query, + } + response = requests.post(url, json=payload, proxies=proxies) + return response.json()["text"] + +def summarize_doc(doc_title): + pass + +def research_agent(company:str): + url = os.environ.get("WORKER_RESEARCH_AGENT_URL") + print(url) + proxies = {"http": ""} + payload = { + "messages": company, + } + response = requests.post(url, json=payload, proxies=proxies) + return response.json()["text"] \ No newline at end of file diff --git a/FinanceAgent/tools/utils.py b/FinanceAgent/tools/utils.py new file mode 100644 index 0000000000..9e7d953813 --- /dev/null +++ b/FinanceAgent/tools/utils.py @@ -0,0 +1,343 @@ +from langchain_community.retrievers import BM25Retriever +from langchain_redis import RedisConfig, RedisVectorStore +from langchain_core.documents import Document +from redis_kv import RedisKVStore +import os +from openai import OpenAI +from langchain_community.embeddings import HuggingFaceBgeEmbeddings +from langchain_huggingface import HuggingFaceEndpointEmbeddings + +# Embedding model +EMBED_MODEL = os.getenv("EMBED_MODEL", "BAAI/bge-base-en-v1.5") +TEI_EMBEDDING_ENDPOINT = os.getenv("TEI_EMBEDDING_ENDPOINT", "") + +# Redis URL +REDIS_URL_VECTOR = os.getenv("REDIS_URL_VECTOR", "redis://localhost:6379/") +REDIS_URL_KV = os.getenv("REDIS_URL_KV", "redis://localhost:6380/") + +# LLM config +LLM_MODEL=os.getenv("LLM_MODEL", "meta-llama/Llama-3.3-70B-Instruct") +LLM_ENDPOINT=os.getenv("LLM_ENDPOINT", "http://localhost:8086") +MAX_TOKENS = os.getenv("MAX_TOKENS", 1024) +TEMPERATURE = os.getenv("TEMPERATURE", 0.2) + +COMPANY_NAME_PROMPT="""\ +Here is the list of company names in the knowledge base: +{company_list} + +This is the company of interest: {company} + +Determine if the company of interest is the same as any of the companies in the knowledge base. +If yes, map the company of interest to the company name in the knowledge base. Output the company name in {{}}. Example: {{3M}}. +If none of the companies in the knowledge base match the company of interest, output "NONE". +""" + +ANSWER_PROMPT = """\ +You are a financial analyst. Read the documents below and answer the question. +Documents: +{documents} + +Question: {query} +Now take a deep breath and think step by step to answer the question. Wrap your final answer in {{}}. Example: {{The company has a revenue of $100 million.}} +""" + +def get_embedder(): + if TEI_EMBEDDING_ENDPOINT: + # create embeddings using TEI endpoint service + # Huggingface API token for TEI embedding endpoint + HUGGINGFACEHUB_API_TOKEN = os.getenv("HUGGINGFACEHUB_API_TOKEN", "") + assert HUGGINGFACEHUB_API_TOKEN, "HuggingFace API token is required for TEI embedding endpoint." + embedder = HuggingFaceEndpointEmbeddings(model=TEI_EMBEDDING_ENDPOINT) + else: + # create embeddings using local embedding model + embedder = HuggingFaceBgeEmbeddings(model_name=EMBED_MODEL) + return embedder + +def generate_answer(prompt): + """ + Use vllm endpoint to generate the answer + """ + # send request to vllm endpoint + client = OpenAI( + base_url=f"{LLM_ENDPOINT}/v1", + api_key="token-abc123", + ) + + params = { + "max_tokens": MAX_TOKENS, + "temperature": TEMPERATURE, + } + + completion = client.chat.completions.create( + model=LLM_MODEL, + messages=[ + {"role": "user", "content": prompt} + ], + **params + ) + + # get response + response = completion.choices[0].message.content + print(f"LLM Response: {response}") + return response + + +def parse_response(response): + if "{" in response: + ret = response.split("{")[1].split("}")[0] + else: + ret = "" + return ret + + +def get_company_list(): + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) + company_list_dict = kvstore.get("company", "company_list") + if company_list_dict: + company_list = company_list_dict["company"] + return company_list + else: + return [] + +def get_company_name_in_kb(company, company_list): + if not company_list: + return "Database is empty." + + company = company.upper() + if company in company_list: + return company + + prompt = COMPANY_NAME_PROMPT.format(company_list=company_list, company=company) + response = generate_answer(prompt) + if "NONE" in response.upper(): + return f"Cannot find {company} in knowledge base." + else: + ret = parse_response(response) + if ret: + return ret + else: + return "Failed to parse LLM response." + +def get_docs_matching_metadata(metadata, collection_name): + """ + metadata: ("company_year", "3M_2023") + docs: list of documents + """ + key = metadata[0] + value = metadata[1] + kvstore= RedisKVStore(redis_uri=REDIS_URL_KV) + collection = kvstore.get_all(collection_name) # collection is a dict + + matching_docs = [] + for idx in collection: + doc = collection[idx] + if doc["metadata"][key] == value: + print(f"Found doc with matching metadata {metadata}") + print(doc["metadata"]["doc_title"]) + matching_docs.append(doc) + print(f"Number of docs found with search_metadata {metadata}: {len(matching_docs)}") + return matching_docs + +def convert_docs(docs): + # docs: list of dicts + converted_docs_content = [] + converted_docs_summary = [] + for doc in docs: + content = doc["content"] + # convert content to Document object + metadata = {"type":"content",**doc["metadata"]} + converted_content = Document( + id = doc["metadata"]["doc_id"], + page_content=content, + metadata=metadata + ) + + # convert summary to Document object + metadata = {"type":"summary", "content":content, **doc["metadata"]} + converted_summary = Document( + id = doc["metadata"]["doc_id"], + page_content=doc["summary"], + metadata=metadata + ) + converted_docs_content.append(converted_content) + converted_docs_summary.append(converted_summary) + return converted_docs_content, converted_docs_summary + +def bm25_search(query, metadata, company, doc_type="chunks", k=10): + collection_name = f"{doc_type}_{company}" + print(f"Collection name: {collection_name}") + + docs = get_docs_matching_metadata(metadata, collection_name) + + if docs: + docs_text, docs_summary = convert_docs(docs) + # BM25 search over content + retriever = BM25Retriever.from_documents(docs_text, k=k) + docs_bm25 = retriever.invoke(query) + print(f"BM25: Found {len(docs_bm25)} docs over content with search metadata: {metadata}") + + # BM25 search over summary/title + retriever = BM25Retriever.from_documents(docs_summary, k=k) + docs_bm25_summary = retriever.invoke(query) + print(f"BM25: Found {len(docs_bm25_summary)} docs over summary with search metadata: {metadata}") + results = docs_bm25 + docs_bm25_summary + else: + results = [] + return results + + +def bm25_search_broad(query, company, year, quarter, k=10, doc_type="chunks"): + # search with company filter, but query is query_company_quarter + metadata = ("company",f"{company}") + query1 = f"{query} {year} {quarter}" + docs1 = bm25_search(query1, metadata, company, k=k, doc_type=doc_type) + + # search with metadata filters + metadata = ("company_year_quarter",f"{company}_{year}_{quarter}") + print(f"BM25: Searching for docs with metadata: {metadata}") + docs = bm25_search(query, metadata, company, k=k, doc_type=doc_type) + if not docs: + print("BM25: No docs found with company, year and quarter filter, only search with company and year filter") + metadata = ("company_year",f"{company}_{year}") + docs = bm25_search(query, metadata, company, k=k, doc_type=doc_type) + if not docs: + print("BM25: No docs found with company and year filter, only search with company filter") + metadata = ("company",f"{company}") + docs = bm25_search(query, metadata, company, k=k, doc_type=doc_type) + + docs = docs + docs1 + if docs: + return docs + else: + return [] + + +def set_filter(metadata_filter): + # metadata_filter: tuple of (key, value) + from redisvl.query.filter import Text + key = metadata_filter[0] + value = metadata_filter[1] + filter_condition = Text(key) == value + return filter_condition + +def similarity_search(vector_store, k, query, company, year, quarter=None): + query1 = f"{query} {year} {quarter}" + filter_condition = set_filter(("company", company)) + docs1 = vector_store.similarity_search(query1, k=k, filter=filter_condition) + print(f"Similarity search: Found {len(docs1)} docs with company filter and query: {query1}") + + filter_condition = set_filter(("company_year_quarter", f"{company}_{year}_{quarter}")) + docs = vector_store.similarity_search(query, k=k, filter=filter_condition) + + if not docs: # if no relevant document found, relax the filter + print("No relevant document found with company, year and quarter filter, only search with comany and year") + filter_condition = set_filter(("company_year", f"{company}_{year}")) + docs = vector_store.similarity_search(query, k=k, filter=filter_condition) + + if not docs: # if no relevant document found, relax the filter + print("No relevant document found with company_year filter, only serach with company.....") + filter_condition = set_filter(("company", company)) + docs = vector_store.similarity_search(query, k=k, filter=filter_condition) + + print(f"Similarity search: Found {len(docs)} docs with filter and query: {query}") + + docs = docs + docs1 + if not docs: + return [] + else: + return docs + +def get_index_name(doc_type: str, metadata: dict): + company = metadata["company"] + if doc_type == "chunks": + index_name = f"chunks_{company}" + elif doc_type == "tables": + index_name = f"tables_{company}" + elif doc_type == "titles": + index_name = f"titles_{company}" + elif doc_type == "full_doc": + index_name = f"full_doc_{company}" + else: + raise ValueError("doc_type should be either chunks, tables, titles, or full_doc.") + return index_name + +def get_content(doc): + # doc can be converted doc + # of saved doc in vector store + if "type" in doc.metadata and doc.metadata["type"] == "summary": + print("BM25 retrieved doc...") + content = doc.metadata["content"] + elif "type" in doc.metadata and doc.metadata["type"] == "content": + print("BM25 retrieved doc...") + content = doc.page_content + else: + print("Dense retriever doc...") + + doc_id = doc.metadata["doc_id"] + # doc_summary=doc.page_content + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) + collection_name = get_index_name(doc.metadata["doc_type"], doc.metadata) + result = kvstore.get(doc_id, collection_name) + content = result["content"] + + # print(f"***Doc Metadata:\n{doc.metadata}") + # print(f"***Content: {content[:100]}...") + + return content + + +def get_unique_docs(docs): + results = [] + context = "" + i = 1 + for doc in docs: + content = get_content(doc) + if content not in results: + results.append(content) + doc_title = doc.metadata["doc_title"] + ret_doc = f"Doc [{i}] from {doc_title}:\n{content}\n" + context += ret_doc + i += 1 + print(f"Number of unique docs found: {len(results)}") + return context + + +def get_vectorstore(index_name): + config = RedisConfig( + index_name=index_name, + redis_url=REDIS_URL_VECTOR, + metadata_schema=[ + {"name": "company", "type": "text"}, + {"name": "year", "type": "text"}, + {"name": "quarter", "type": "text"}, + {"name": "doc_type", "type": "text"}, + {"name": "doc_title", "type": "text"}, + {"name": "doc_id", "type": "text"}, + {"name": "company_year", "type": "text"}, + {"name": "company_year_quarter", "type": "text"}, + ], + ) + embedder = get_embedder() + vector_store = RedisVectorStore(embedder, config=config) + return vector_store + + +def get_vectorstore_titles(index_name): + config = RedisConfig( + index_name=index_name, + redis_url=REDIS_URL_VECTOR, + metadata_schema=[ + {"name": "company", "type": "text"}, + {"name": "year", "type": "text"}, + {"name": "quarter", "type": "text"}, + {"name": "doc_type", "type": "text"}, + {"name": "doc_title", "type": "text"}, + {"name": "company_year", "type": "text"}, + {"name": "company_year_quarter", "type": "text"}, + ], + ) + embedder = get_embedder() + vector_store = RedisVectorStore(embedder, config=config) + return vector_store + + From 94f16efb3c7f6d2128d38d9a72b580480ad34ed5 Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Fri, 14 Mar 2025 03:09:54 +0000 Subject: [PATCH 03/20] add dataprep compose yaml Signed-off-by: minmin-intel --- FinanceAgent/README.md | 2 +- .../intel/hpu/gaudi/compose.yaml | 56 ++++++------ .../intel/hpu/gaudi/dataprep_compose.yaml | 83 ++++++++++++++++++ FinanceAgent/tests/step1_build_images.sh | 67 ++++++++++++++ FinanceAgent/tests/test.py | 5 ++ FinanceAgent/tests/test_compose_on_gaudi.sh | 87 +++++++++++++++++++ 6 files changed, 271 insertions(+), 29 deletions(-) create mode 100644 FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml create mode 100644 FinanceAgent/tests/step1_build_images.sh diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index d6d1007997..36cb8b3a33 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -49,7 +49,7 @@ The commands below will upload some example files into the knowledge base. You c First, launch the redis databases and the dataprep microservice. ```bash - +docker compose -f $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep.yaml up -d ``` ### 3.3 Launch the multi-agent system diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index 2f3a4fafce..51efdd6551 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -31,34 +31,34 @@ services: https_proxy: ${https_proxy} port: 9095 - worker-research-agent: - image: opea/agent:latest - container_name: research-agent-endpoint - volumes: - - ${TOOLSET_PATH}:/home/user/tools/ - - ${PROMPT_PATH}:/home/user/prompts/ - ports: - - "9096:9096" - ipc: host - environment: - ip_address: ${ip_address} - strategy: react_llama - with_memory: false - recursion_limit: ${recursion_limit_worker} - llm_engine: vllm - HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} - llm_endpoint_url: ${LLM_ENDPOINT_URL} - model: ${LLM_MODEL_ID} - temperature: ${temperature} - max_new_tokens: ${max_new_tokens} - stream: false - tools: /home/user/tools/research_agent_tools.yaml - custom_prompt: /home/user/prompts/research_prompt.py - require_human_feedback: false - no_proxy: ${no_proxy} - http_proxy: ${http_proxy} - https_proxy: ${https_proxy} - port: 9096 + # worker-research-agent: + # image: opea/agent:latest + # container_name: research-agent-endpoint + # volumes: + # - ${TOOLSET_PATH}:/home/user/tools/ + # - ${PROMPT_PATH}:/home/user/prompts/ + # ports: + # - "9096:9096" + # ipc: host + # environment: + # ip_address: ${ip_address} + # strategy: react_llama + # with_memory: false + # recursion_limit: ${recursion_limit_worker} + # llm_engine: vllm + # HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} + # llm_endpoint_url: ${LLM_ENDPOINT_URL} + # model: ${LLM_MODEL_ID} + # temperature: ${temperature} + # max_new_tokens: ${max_new_tokens} + # stream: false + # tools: /home/user/tools/research_agent_tools.yaml + # custom_prompt: /home/user/prompts/research_prompt.py + # require_human_feedback: false + # no_proxy: ${no_proxy} + # http_proxy: ${http_proxy} + # https_proxy: ${https_proxy} + # port: 9096 supervisor-react-agent: image: opea/agent:latest diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml new file mode 100644 index 0000000000..c8189d3e70 --- /dev/null +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml @@ -0,0 +1,83 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +services: + tei-embedding-serving: + image: ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 + container_name: tei-embedding-serving + entrypoint: /bin/sh -c "apt-get update && apt-get install -y curl && text-embeddings-router --json-output --model-id ${EMBEDDING_MODEL_ID} --auto-truncate" + ports: + - "${TEI_EMBEDDER_PORT:-12000}:80" + volumes: + - "./data:/data" + shm_size: 1g + environment: + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + host_ip: ${host_ip} + HF_TOKEN: ${HF_TOKEN} + healthcheck: + test: ["CMD", "curl", "-f", "http://${host_ip}:${TEI_EMBEDDER_PORT}/health"] + interval: 10s + timeout: 6s + retries: 48 + + redis-vector-db: + image: redis/redis-stack:7.2.0-v9 + container_name: redis-vector-db + ports: + - "${REDIS_PORT1:-6379}:6379" + - "${REDIS_PORT2:-8001}:8001" + environment: + - no_proxy=${no_proxy} + - http_proxy=${http_proxy} + - https_proxy=${https_proxy} + healthcheck: + test: ["CMD", "redis-cli", "ping"] + timeout: 10s + retries: 3 + start_period: 10s + + redis-kv-store: + image: redis/redis-stack:7.2.0-v9 + container_name: redis-kv-store + ports: + - "${REDIS_PORT3:-6380}:6379" + - "${REDIS_PORT4:-8002}:8001" + environment: + - no_proxy=${no_proxy} + - http_proxy=${http_proxy} + - https_proxy=${https_proxy} + healthcheck: + test: ["CMD", "redis-cli", "ping"] + timeout: 10s + retries: 3 + start_period: 10s + + dataprep-redis-finance: + image: ${REGISTRY:-opea}/dataprep:${TAG:-latest} + container_name: dataprep-redis-server-finance + depends_on: + redis-vector-db: + condition: service_healthy + redis-kv-store: + condition: service_healthy + tei-embedding-serving: + condition: service_healthy + ports: + - "${DATAPREP_PORT:-11108}:5000" + environment: + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + DATAPREP_COMPONENT_NAME: ${DATAPREP_COMPONENT_NAME} + REDIS_URL_VECTOR: ${REDIS_URL_VECTOR} + REDIS_URL_KV: ${REDIS_URL_KV} + TEI_EMBEDDING_ENDPOINT: ${TEI_EMBEDDING_ENDPOINT} + LLM_ENDPOINT: ${LLM_ENDPOINT} + LLM_MODEL: ${LLM_MODEL} + HUGGINGFACEHUB_API_TOKEN: ${HF_TOKEN} + HF_TOKEN: ${HF_TOKEN} + LOGFLAG: true + diff --git a/FinanceAgent/tests/step1_build_images.sh b/FinanceAgent/tests/step1_build_images.sh new file mode 100644 index 0000000000..e11153f8e9 --- /dev/null +++ b/FinanceAgent/tests/step1_build_images.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +set -e +WORKPATH=$(dirname "$PWD") +export WORKDIR=$WORKPATH/../../ +echo "WORKDIR=${WORKDIR}" +export ip_address=$(hostname -I | awk '{print $1}') + + +function get_genai_comps() { + if [ ! -d "GenAIComps" ] ; then + git clone --depth 1 --branch ${opea_branch:-"main"} https://github.com/opea-project/GenAIComps.git + fi +} + + +function build_agent_docker_image() { + for CI + cd $WORKDIR/GenAIExamples/AgentQnA/docker_image_build/ + get_genai_comps + cd $WORKDIR/GenAIComps/FinanceAgent/docker_image_build/ + echo "Build agent image with --no-cache..." + docker compose -f build.yaml build --no-cache +} + +function build_agent_image_local(){ + cd $WORKDIR/GenAIComps/ + docker build -t opea/agent:latest -f comps/agent/src/Dockerfile . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy + +} + +function build_vllm_docker_image() { + echo "Building the vllm docker image" + cd $WORKPATH + echo $WORKPATH + if [ ! -d "./vllm-fork" ]; then + git clone https://github.com/HabanaAI/vllm-fork.git + fi + cd ./vllm-fork + VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") + git checkout ${VLLM_VER} &> /dev/null + docker build --no-cache -f Dockerfile.hpu -t opea/vllm-gaudi:ci --shm-size=128g . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy + if [ $? -ne 0 ]; then + echo "opea/vllm-gaudi:ci failed" + exit 1 + else + echo "opea/vllm-gaudi:ci successful" + fi +} + + +function main() { + echo "==================== Build agent docker image ====================" + # build_agent_docker_image + build_agent_image_local + echo "==================== Build agent docker image completed ====================" + + echo "==================== Build vllm docker image ====================" + build_vllm_docker_image + echo "==================== Build vllm docker image completed ====================" + + docker image ls | grep vllm +} + +main diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py index 2f0bbd557f..ab83f4f08d 100644 --- a/FinanceAgent/tests/test.py +++ b/FinanceAgent/tests/test.py @@ -79,11 +79,16 @@ def test_supervisor_agent_single_turn(args): parser.add_argument("--stream", action="store_true", help="streaming mode") parser.add_argument("--prompt", type=str, help="prompt message") parser.add_argument("--agent_role", type=str, default="supervisor", help="supervisor or worker") + parser.add_argument("--multi-turn", action="store_true", help="multi-turn conversation") args, _ = parser.parse_known_args() print(args) if args.agent_role == "supervisor": + if args.multi_turn: + test_chat_completion_multi_turn(args) + else: + test_supervisor_agent_single_turn(args) test_chat_completion_multi_turn(args) elif args.agent_role == "worker": test_worker_agent(args) diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index e69de29bb2..59ad1cebbc 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +set -xe + +WORKPATH=$(dirname "$PWD") +export WORKDIR=$WORKPATH/../../ +echo "WORKDIR=${WORKDIR}" +export ip_address=$(hostname -I | awk '{print $1}') +export HUGGINGFACEHUB_API_TOKEN=${HUGGINGFACEHUB_API_TOKEN} +export TOOLSET_PATH=$WORKDIR/GenAIExamples/AgentQnA/tools/ + + +function stop_agent_docker() { + cd $WORKPATH/docker_compose/intel/hpu/gaudi/ + container_list=$(cat compose.yaml | grep container_name | cut -d':' -f2) + for container_name in $container_list; do + cid=$(docker ps -aq --filter "name=$container_name") + echo "Stopping container $container_name" + if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi + done +} + +function stop_llm(){ + cd $WORKPATH/docker_compose/intel/hpu/gaudi/ + container_list=$(cat tgi_gaudi.yaml | grep container_name | cut -d':' -f2) + for container_name in $container_list; do + cid=$(docker ps -aq --filter "name=$container_name") + echo "Stopping container $container_name" + if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi + done + + cid=$(docker ps -aq --filter "name=vllm-gaudi-server") + echo "Stopping container $cid" + if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi + + cid=$(docker ps -aq --filter "name=test-comps-vllm-gaudi-service") + echo "Stopping container $cid" + if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi + +} + +function start_dataprep(){ + docker compose -f $WORKPATH/docker_compose/intel/hpu/gaudi/dataprep.yaml up -d +} + +function stop_dataprep() { + echo "Stopping databases" + cid=$(docker ps -aq --filter "name=dataprep-redis-server*" --filter "name=redis-*" --filter "name=tei-embedding-*") + if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi + +} + + +echo "workpath: $WORKPATH" +echo "=================== Stop containers ====================" +stop_llm +stop_agent_docker +stop_databases + +cd $WORKPATH/tests + +echo "=================== #1 Building docker images====================" +bash step1_build_images.sh +echo "=================== #1 Building docker images completed====================" + +echo "=================== #2 Start dataprep====================" +start_dataprep +echo "=================== #2 Dataprep started====================" + +echo "=================== #3 Ingest data and validate retrieval====================" +bash step3_ingest_data_and_validate_retrieval.sh +echo "=================== #3 Data ingestion and validation completed====================" + +echo "=================== #4 Start agents ====================" +bash step4_launch_and_validate_agent_gaudi.sh +echo "=================== #4 Agent test passed ====================" + +echo "=================== #5 Stop microservices ====================" +stop_agent_docker +stop_dataprep +stop_llm +echo "=================== #5 Microservices stopped====================" + +echo y | docker system prune + +echo "ALL DONE!!" From acf9796100c5f920c65140118677dbe5deffba28 Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Fri, 14 Mar 2025 19:21:05 +0000 Subject: [PATCH 04/20] add test scripts Signed-off-by: minmin-intel --- .../intel/hpu/gaudi/compose.yaml | 17 +- .../intel/hpu/gaudi/dataprep_compose.yaml | 6 +- .../intel/hpu/gaudi/launch_agents.sh | 25 ++ FinanceAgent/tests/test_compose_on_gaudi.sh | 256 +++++++++++++++--- FinanceAgent/tests/test_redis_finance.py | 70 +++++ FinanceAgent/tools/finqa_tools.py | 16 +- FinanceAgent/tools/utils.py | 13 +- 7 files changed, 339 insertions(+), 64 deletions(-) create mode 100644 FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh create mode 100644 FinanceAgent/tests/test_redis_finance.py diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index 51efdd6551..ba243dbbec 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -20,8 +20,8 @@ services: HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} llm_endpoint_url: ${LLM_ENDPOINT_URL} model: ${LLM_MODEL_ID} - temperature: ${temperature} - max_new_tokens: ${max_new_tokens} + temperature: ${TEMPERATURE} + max_new_tokens: ${MAX_TOKENS} stream: false tools: /home/user/tools/finqa_agent_tools.yaml custom_prompt: /home/user/prompts/finqa_prompt.py @@ -29,6 +29,9 @@ services: no_proxy: ${no_proxy} http_proxy: ${http_proxy} https_proxy: ${https_proxy} + REDIS_URL_VECTOR: $REDIS_URL_VECTOR + REDIS_URL_KV: $REDIS_URL_KV + TEI_EMBEDDING_ENDPOINT: $TEI_EMBEDDING_ENDPOINT port: 9095 # worker-research-agent: @@ -49,8 +52,8 @@ services: # HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} # llm_endpoint_url: ${LLM_ENDPOINT_URL} # model: ${LLM_MODEL_ID} - # temperature: ${temperature} - # max_new_tokens: ${max_new_tokens} + # temperature: ${TEMPERATURE} + # max_new_tokens: ${MAX_TOKENS} # stream: false # tools: /home/user/tools/research_agent_tools.yaml # custom_prompt: /home/user/prompts/research_prompt.py @@ -65,7 +68,7 @@ services: container_name: supervisor-agent-endpoint depends_on: - worker-finqa-agent - - worker-research-agent + # - worker-research-agent volumes: - ${TOOLSET_PATH}:/home/user/tools/ - ${PROMPT_PATH}:/home/user/prompts/ @@ -81,8 +84,8 @@ services: HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} llm_endpoint_url: ${LLM_ENDPOINT_URL} model: ${LLM_MODEL_ID} - temperature: ${temperature} - max_new_tokens: ${max_new_tokens} + temperature: ${TEMPERATURE} + max_new_tokens: ${MAX_TOKENS} stream: true tools: /home/user/tools/supervisor_agent_tools.yaml custom_prompt: /home/user/prompts/supervisor_prompt.py diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml index c8189d3e70..c04445c302 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml @@ -7,7 +7,7 @@ services: container_name: tei-embedding-serving entrypoint: /bin/sh -c "apt-get update && apt-get install -y curl && text-embeddings-router --json-output --model-id ${EMBEDDING_MODEL_ID} --auto-truncate" ports: - - "${TEI_EMBEDDER_PORT:-12000}:80" + - "${TEI_EMBEDDER_PORT:-10221}:80" volumes: - "./data:/data" shm_size: 1g @@ -56,7 +56,7 @@ services: start_period: 10s dataprep-redis-finance: - image: ${REGISTRY:-opea}/dataprep:${TAG:-latest} + image: ${REGISTRY:-opea}/dataprep:${TAG:-comps} ### CHange back to latest container_name: dataprep-redis-server-finance depends_on: redis-vector-db: @@ -66,7 +66,7 @@ services: tei-embedding-serving: condition: service_healthy ports: - - "${DATAPREP_PORT:-11108}:5000" + - "${DATAPREP_PORT:-6007}:5000" environment: no_proxy: ${no_proxy} http_proxy: ${http_proxy} diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh new file mode 100644 index 0000000000..6e002a2936 --- /dev/null +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh @@ -0,0 +1,25 @@ + +export ip_address=$(hostname -I | awk '{print $1}') +export HUGGINGFACEHUB_API_TOKEN=${HF_TOKEN} +export TOOLSET_PATH=$WORKDIR/GenAIExamples/FinanceAgent/tools/ +echo "TOOLSET_PATH=${TOOLSET_PATH}" +export PROMPT_PATH=$WORKDIR/GenAIExamples/FinanceAgent/prompts/ +export recursion_limit_worker=12 +export recursion_limit_supervisor=10 + +vllm_port=8086 +export LLM_MODEL_ID="meta-llama/Llama-3.3-70B-Instruct" +export LLM_ENDPOINT_URL="http://${ip_address}:${vllm_port}" +export TEMPERATURE=0.5 +export MAX_TOKENS=4096 + +export WORKER_FINQA_AGENT_URL="http://${ip_address}:9095" +export WORKER_RESEARCH_AGENT_URL="http://${ip_address}:9096" + +export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:10221" +export REDIS_URL_VECTOR="redis://${ip_address}:6379" +export REDIS_URL_KV="redis://${ip_address}:6380" + + + +docker compose -f compose.yaml up -d diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index 59ad1cebbc..d7d0826a1c 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -3,45 +3,147 @@ # SPDX-License-Identifier: Apache-2.0 set -xe -WORKPATH=$(dirname "$PWD") +export WORKPATH=$(dirname "$PWD") export WORKDIR=$WORKPATH/../../ echo "WORKDIR=${WORKDIR}" export ip_address=$(hostname -I | awk '{print $1}') -export HUGGINGFACEHUB_API_TOKEN=${HUGGINGFACEHUB_API_TOKEN} -export TOOLSET_PATH=$WORKDIR/GenAIExamples/AgentQnA/tools/ +#### env vars for LLM endpoint ############# +model=meta-llama/Llama-3.3-70B-Instruct +vllm_port=8086 +vllm_image=$vllm_image +HF_CACHE_DIR=/data2/huggingface +vllm_volume=${HF_CACHE_DIR} +####################################### -function stop_agent_docker() { - cd $WORKPATH/docker_compose/intel/hpu/gaudi/ - container_list=$(cat compose.yaml | grep container_name | cut -d':' -f2) - for container_name in $container_list; do - cid=$(docker ps -aq --filter "name=$container_name") - echo "Stopping container $container_name" - if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi - done +#### env vars for dataprep ############# +export host_ip=${ip_address} +export DATAPREP_PORT="6007" +export TEI_EMBEDDER_PORT="10221" +export REDIS_URL_VECTOR="redis://${ip_address}:6379" +export REDIS_URL_KV="redis://${ip_address}:6380" +export LLM_MODEL=$model +export LLM_ENDPOINT="http://${ip_address}:${vllm_port}" +export DATAPREP_COMPONENT_NAME="OPEA_DATAPREP_REDIS_FINANCE" +export EMBEDDING_MODEL_ID="BAAI/bge-base-en-v1.5" +export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:${TEI_EMBEDDER_PORT}" +####################################### + +#### env vars for agent ############# + + +function get_genai_comps() { + if [ ! -d "GenAIComps" ] ; then + git clone --depth 1 --branch ${opea_branch:-"main"} https://github.com/opea-project/GenAIComps.git + fi } -function stop_llm(){ - cd $WORKPATH/docker_compose/intel/hpu/gaudi/ - container_list=$(cat tgi_gaudi.yaml | grep container_name | cut -d':' -f2) - for container_name in $container_list; do - cid=$(docker ps -aq --filter "name=$container_name") - echo "Stopping container $container_name" - if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi +function build_dataprep_agent_images() { + cd $WORKDIR/GenAIExamples/FinanceAgent/docker_image_build/ + get_genai_comps + echo "Build agent image with --no-cache..." + docker compose -f build.yaml build --no-cache +} + +function build_agent_image_local(){ + cd $WORKDIR/GenAIComps/ + docker build -t opea/agent:latest -f comps/agent/src/Dockerfile . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy +} + +function build_vllm_docker_image() { + echo "Building the vllm docker image" + cd $WORKPATH + echo $WORKPATH + if [ ! -d "./vllm-fork" ]; then + git clone https://github.com/HabanaAI/vllm-fork.git + fi + cd ./vllm-fork + VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") + git checkout ${VLLM_VER} &> /dev/null + docker build --no-cache -f Dockerfile.hpu -t $vllm_image --shm-size=128g . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy + if [ $? -ne 0 ]; then + echo "$vllm_image failed" + exit 1 + else + echo "$vllm_image successful" + fi +} + + +function start_vllm_service_70B() { + echo "token is ${HF_TOKEN}" + echo "start vllm gaudi service" + echo "**************model is $model**************" + docker run -d --runtime=habana --rm --name "vllm-gaudi-server" -e HABANA_VISIBLE_DEVICES=0,1,2,3 -p $vllm_port:8000 -v $vllm_volume:/data -e HF_TOKEN=$HF_TOKEN -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN -e HF_HOME=/data -e OMPI_MCA_btl_vader_single_copy_mechanism=none -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e http_proxy=$http_proxy -e https_proxy=$https_proxy -e no_proxy=$no_proxy -e VLLM_SKIP_WARMUP=true --cap-add=sys_nice --ipc=host $vllm_image --model ${model} --max-seq-len-to-capture 16384 --tensor-parallel-size 4 + sleep 5s + echo "Waiting vllm gaudi ready" + n=0 + until [[ "$n" -ge 100 ]] || [[ $ready == true ]]; do + docker logs vllm-gaudi-server &> ${LOG_PATH}/vllm-gaudi-service.log + n=$((n+1)) + if grep -q "Uvicorn running on" ${LOG_PATH}/vllm-gaudi-service.log; then + break + fi + if grep -q "No such container" ${LOG_PATH}/vllm-gaudi-service.log; then + echo "container vllm-gaudi-server not found" + exit 1 + fi + sleep 5s done + sleep 5s + echo "Service started successfully" +} - cid=$(docker ps -aq --filter "name=vllm-gaudi-server") - echo "Stopping container $cid" - if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi - cid=$(docker ps -aq --filter "name=test-comps-vllm-gaudi-service") +function stop_llm(){ + cid=$(docker ps -aq --filter "name=vllm-gaudi-server") echo "Stopping container $cid" if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi } function start_dataprep(){ - docker compose -f $WORKPATH/docker_compose/intel/hpu/gaudi/dataprep.yaml up -d + docker compose -f $WORKPATH/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml up -d + sleep 1m +} + +function validate() { + local CONTENT="$1" + local EXPECTED_RESULT="$2" + local SERVICE_NAME="$3" + echo "EXPECTED_RESULT: $EXPECTED_RESULT" + echo "Content: $CONTENT" + if echo "$CONTENT" | grep -q "$EXPECTED_RESULT"; then + echo "[ $SERVICE_NAME ] Content is as expected: $CONTENT" + echo 0 + else + echo "[ $SERVICE_NAME ] Content does not match the expected result: $CONTENT" + echo 1 + fi +} + +function ingest_validate_dataprep() { + # test /v1/dataprep/ingest + echo "=========== Test ingest ===========" + local CONTENT=$(python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option ingest) + local EXIT_CODE=$(validate "$CONTENT" "200" "dataprep-redis-finance") + echo "$EXIT_CODE" + local EXIT_CODE="${EXIT_CODE:0-1}" + if [ "$EXIT_CODE" == "1" ]; then + docker logs dataprep-redis-server-finance + exit 1 + fi + + # test /v1/dataprep/get + echo "=========== Test get ===========" + local CONTENT=$(python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option get) + local EXIT_CODE=$(validate "$CONTENT" "Request successful" "dataprep-redis-finance") + echo "$EXIT_CODE" + local EXIT_CODE="${EXIT_CODE:0-1}" + if [ "$EXIT_CODE" == "1" ]; then + docker logs dataprep-redis-server-finance + exit 1 + fi } function stop_dataprep() { @@ -51,37 +153,105 @@ function stop_dataprep() { } +function start_agents() { + echo "Starting Agent services" + cd $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/ + bash launch_agents.sh + sleep 2m +} + + +function validate_agent_service() { + # # test worker finqa agent + echo "======================Testing worker rag agent======================" + export agent_port="9095" + prompt="What is Gap's revenue in 2024?" + local CONTENT=$(python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port) + echo $CONTENT + local EXIT_CODE=$(validate "$CONTENT" "15" "finqa-agent-endpoint") + echo $EXIT_CODE + local EXIT_CODE="${EXIT_CODE:0-1}" + if [ "$EXIT_CODE" == "1" ]; then + docker logs finqa-agent-endpoint + exit 1 + fi + + # # # test worker research agent + # echo "======================Testing worker sql agent======================" + # export agent_port="9096" + # prompt="How many employees are there in the company?" + # local CONTENT=$(python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port) + # local EXIT_CODE=$(validate "$CONTENT" "8" "sql-agent-endpoint") + # echo $CONTENT + # # echo $EXIT_CODE + # local EXIT_CODE="${EXIT_CODE:0-1}" + # if [ "$EXIT_CODE" == "1" ]; then + # docker logs sql-agent-endpoint + # exit 1 + # fi + + # test supervisor react agent + echo "======================Testing supervisor agent: single turns ======================" + export agent_port="9090" + local CONTENT=$(python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --stream) + # echo $CONTENT + # local EXIT_CODE=$(validate "$CONTENT" "Iron" "react-agent-endpoint") + # echo $EXIT_CODE + # local EXIT_CODE="${EXIT_CODE:0-1}" + # if [ "$EXIT_CODE" == "1" ]; then + # docker logs react-agent-endpoint + # exit 1 + # fi + +} + +function stop_agent_docker() { + cd $WORKPATH/docker_compose/intel/hpu/gaudi/ + container_list=$(cat compose.yaml | grep container_name | cut -d':' -f2) + for container_name in $container_list; do + cid=$(docker ps -aq --filter "name=$container_name") + echo "Stopping container $container_name" + if [[ ! -z "$cid" ]]; then docker rm $cid -f && sleep 1s; fi + done +} + echo "workpath: $WORKPATH" -echo "=================== Stop containers ====================" -stop_llm +# echo "=================== Stop containers ====================" +# stop_llm stop_agent_docker -stop_databases +# stop_dataprep cd $WORKPATH/tests -echo "=================== #1 Building docker images====================" -bash step1_build_images.sh -echo "=================== #1 Building docker images completed====================" +# echo "=================== #1 Building docker images====================" +# build_vllm_docker_image +# build_dataprep_agent_images + +#### for local test +# build_agent_image_local +# echo "=================== #1 Building docker images completed====================" -echo "=================== #2 Start dataprep====================" -start_dataprep -echo "=================== #2 Dataprep started====================" +# echo "=================== #2 Start vllm endpoint====================" +# start_vllm_service_70B +# echo "=================== #2 vllm endpoint started====================" -echo "=================== #3 Ingest data and validate retrieval====================" -bash step3_ingest_data_and_validate_retrieval.sh -echo "=================== #3 Data ingestion and validation completed====================" +# echo "=================== #3 Start dataprep and ingest data ====================" +# start_dataprep +# ingest_validate_dataprep +# echo "=================== #3 Data ingestion and validation completed====================" echo "=================== #4 Start agents ====================" -bash step4_launch_and_validate_agent_gaudi.sh +start_agents +validate_agent_service echo "=================== #4 Agent test passed ====================" -echo "=================== #5 Stop microservices ====================" -stop_agent_docker -stop_dataprep -stop_llm -echo "=================== #5 Microservices stopped====================" +# echo "=================== #5 Stop microservices ====================" +# stop_agent_docker +# stop_dataprep +# stop_llm +# echo "=================== #5 Microservices stopped====================" -echo y | docker system prune +# echo y | docker system prune -echo "ALL DONE!!" +# echo "ALL DONE!!" diff --git a/FinanceAgent/tests/test_redis_finance.py b/FinanceAgent/tests/test_redis_finance.py new file mode 100644 index 0000000000..f98360d69a --- /dev/null +++ b/FinanceAgent/tests/test_redis_finance.py @@ -0,0 +1,70 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import json +import os + +import requests + + +def test_html(url, link_list): + proxies = {"http": ""} + payload = {"link_list": json.dumps(link_list)} + try: + resp = requests.post(url=url, data=payload, proxies=proxies) + print(resp.text) + resp.raise_for_status() # Raise an exception for unsuccessful HTTP status codes + print("Request successful!") + except requests.exceptions.RequestException as e: + print("An error occurred:", e) + + +def test_delete(url, filename): + proxies = {"http": ""} + payload = {"file_path": filename} + try: + resp = requests.post(url=url, json=payload, proxies=proxies) + print(resp.text) + resp.raise_for_status() # Raise an exception for unsuccessful HTTP status codes + print("Request successful!") + except requests.exceptions.RequestException as e: + print("An error occurred:", e) + + +def test_get(url): + proxies = {"http": ""} + try: + resp = requests.post(url=url, proxies=proxies) + print(resp.text) + resp.raise_for_status() # Raise an exception for unsuccessful HTTP status codes + print("Request successful!") + except requests.exceptions.RequestException as e: + print("An error occurred:", e) + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("--test_option", type=str, default="ingest", help="ingest, get, delete") + parser.add_argument("--port", type=str, default="6007", help="port number") + args = parser.parse_args() + + port = args.port + + if args.test_option == "ingest": + url = f"http://localhost:{port}/v1/dataprep/ingest" + link_list = [ + "https://www.fool.com/earnings/call-transcripts/2025/03/06/costco-wholesale-cost-q2-2025-earnings-call-transc/", + "https://www.fool.com/earnings/call-transcripts/2025/03/07/gap-gap-q4-2024-earnings-call-transcript/", + ] + test_html(url, link_list) + elif args.test_option == "delete": + url = f"http://localhost:{port}/v1/dataprep/delete" + filename = "Costco Wholesale" + test_delete(url, filename) + elif args.test_option == "get": + url = f"http://localhost:{port}/v1/dataprep/get" + test_get(url) + else: + raise ValueError("Invalid test_option value. Please choose from ingest, get, delete.") \ No newline at end of file diff --git a/FinanceAgent/tools/finqa_tools.py b/FinanceAgent/tools/finqa_tools.py index aff31a82ab..55ea015d87 100644 --- a/FinanceAgent/tools/finqa_tools.py +++ b/FinanceAgent/tools/finqa_tools.py @@ -1,4 +1,4 @@ -from utils import * +from tools.utils import * def get_context_bm25_llm(query, company, year, quarter = ""): k = 5 @@ -29,7 +29,7 @@ def get_context_bm25_llm(query, company, year, quarter = ""): # get unique results context = get_unique_docs(chunks+tables) - print("Context:\n", context) + print("Context:\n", context[:500]) if context: query = f"{query} for {company} in {year} {quarter}" @@ -38,6 +38,7 @@ def get_context_bm25_llm(query, company, year, quarter = ""): response = parse_response(response) else: response = f"No relevant information found for {company} in {year} {quarter}." + print("Search result:\n", response) return response @@ -75,9 +76,14 @@ def search_full_doc(query, company): if __name__ == "__main__": - company="Gap" - year="2024" - quarter="Q4" + # company="Gap" + # year="2024" + # quarter="Q4" + + company="Costco" + year="2025" + quarter="Q2" + collection_name=f"chunks_{company}" search_metadata = ("company", company) diff --git a/FinanceAgent/tools/utils.py b/FinanceAgent/tools/utils.py index 9e7d953813..fb0679f6e7 100644 --- a/FinanceAgent/tools/utils.py +++ b/FinanceAgent/tools/utils.py @@ -1,14 +1,14 @@ from langchain_community.retrievers import BM25Retriever from langchain_redis import RedisConfig, RedisVectorStore from langchain_core.documents import Document -from redis_kv import RedisKVStore +from tools.redis_kv import RedisKVStore import os from openai import OpenAI from langchain_community.embeddings import HuggingFaceBgeEmbeddings from langchain_huggingface import HuggingFaceEndpointEmbeddings # Embedding model -EMBED_MODEL = os.getenv("EMBED_MODEL", "BAAI/bge-base-en-v1.5") +EMBED_MODEL = os.getenv("EMBED_MODEL", "BAAI/bge-base-en-v1.5") TEI_EMBEDDING_ENDPOINT = os.getenv("TEI_EMBEDDING_ENDPOINT", "") # Redis URL @@ -16,10 +16,11 @@ REDIS_URL_KV = os.getenv("REDIS_URL_KV", "redis://localhost:6380/") # LLM config -LLM_MODEL=os.getenv("LLM_MODEL", "meta-llama/Llama-3.3-70B-Instruct") -LLM_ENDPOINT=os.getenv("LLM_ENDPOINT", "http://localhost:8086") -MAX_TOKENS = os.getenv("MAX_TOKENS", 1024) -TEMPERATURE = os.getenv("TEMPERATURE", 0.2) +LLM_MODEL=os.getenv("model", "meta-llama/Llama-3.3-70B-Instruct") +LLM_ENDPOINT=os.getenv("llm_endpoint_url", "http://localhost:8086") +print(f"LLM endpoint: {LLM_ENDPOINT}") +MAX_TOKENS = 1024 +TEMPERATURE = 0.2 COMPANY_NAME_PROMPT="""\ Here is the list of company names in the knowledge base: From 00592bdb8779a7e4e1673574d50cadf2c4f6c27c Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Fri, 14 Mar 2025 22:21:05 +0000 Subject: [PATCH 05/20] finqa and supervisor agent tested Signed-off-by: minmin-intel --- .../intel/hpu/gaudi/dataprep_compose.yaml | 2 +- .../intel/hpu/gaudi/launch_agents.sh | 4 +- FinanceAgent/docker_image_build/build.yaml | 12 ++-- FinanceAgent/tests/step1_build_images.sh | 67 ------------------- FinanceAgent/tests/test.py | 1 - .../tools/supervisor_agent_tools.yaml | 32 ++++----- 6 files changed, 25 insertions(+), 93 deletions(-) delete mode 100644 FinanceAgent/tests/step1_build_images.sh diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml index c04445c302..a1f78bebab 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml @@ -56,7 +56,7 @@ services: start_period: 10s dataprep-redis-finance: - image: ${REGISTRY:-opea}/dataprep:${TAG:-comps} ### CHange back to latest + image: ${REGISTRY:-opea}/dataprep:${TAG:-latest} container_name: dataprep-redis-server-finance depends_on: redis-vector-db: diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh index 6e002a2936..cc2d979f21 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh @@ -13,8 +13,8 @@ export LLM_ENDPOINT_URL="http://${ip_address}:${vllm_port}" export TEMPERATURE=0.5 export MAX_TOKENS=4096 -export WORKER_FINQA_AGENT_URL="http://${ip_address}:9095" -export WORKER_RESEARCH_AGENT_URL="http://${ip_address}:9096" +export WORKER_FINQA_AGENT_URL="http://${ip_address}:9095/v1/chat/completions" +export WORKER_RESEARCH_AGENT_URL="http://${ip_address}:9096/v1/chat/completions" export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:10221" export REDIS_URL_VECTOR="redis://${ip_address}:6379" diff --git a/FinanceAgent/docker_image_build/build.yaml b/FinanceAgent/docker_image_build/build.yaml index ac0d56dc4d..867cc3a8c4 100644 --- a/FinanceAgent/docker_image_build/build.yaml +++ b/FinanceAgent/docker_image_build/build.yaml @@ -20,9 +20,9 @@ services: https_proxy: ${https_proxy} no_proxy: ${no_proxy} image: ${REGISTRY:-opea}/agent:${TAG:-latest} - agent-ui: - build: - context: ../ui - dockerfile: ./docker/Dockerfile - extends: agent - image: ${REGISTRY:-opea}/agent-ui:${TAG:-latest} + # agent-ui: + # build: + # context: ../ui + # dockerfile: ./docker/Dockerfile + # extends: agent + # image: ${REGISTRY:-opea}/agent-ui:${TAG:-latest} diff --git a/FinanceAgent/tests/step1_build_images.sh b/FinanceAgent/tests/step1_build_images.sh deleted file mode 100644 index e11153f8e9..0000000000 --- a/FinanceAgent/tests/step1_build_images.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -set -e -WORKPATH=$(dirname "$PWD") -export WORKDIR=$WORKPATH/../../ -echo "WORKDIR=${WORKDIR}" -export ip_address=$(hostname -I | awk '{print $1}') - - -function get_genai_comps() { - if [ ! -d "GenAIComps" ] ; then - git clone --depth 1 --branch ${opea_branch:-"main"} https://github.com/opea-project/GenAIComps.git - fi -} - - -function build_agent_docker_image() { - for CI - cd $WORKDIR/GenAIExamples/AgentQnA/docker_image_build/ - get_genai_comps - cd $WORKDIR/GenAIComps/FinanceAgent/docker_image_build/ - echo "Build agent image with --no-cache..." - docker compose -f build.yaml build --no-cache -} - -function build_agent_image_local(){ - cd $WORKDIR/GenAIComps/ - docker build -t opea/agent:latest -f comps/agent/src/Dockerfile . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy - -} - -function build_vllm_docker_image() { - echo "Building the vllm docker image" - cd $WORKPATH - echo $WORKPATH - if [ ! -d "./vllm-fork" ]; then - git clone https://github.com/HabanaAI/vllm-fork.git - fi - cd ./vllm-fork - VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") - git checkout ${VLLM_VER} &> /dev/null - docker build --no-cache -f Dockerfile.hpu -t opea/vllm-gaudi:ci --shm-size=128g . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy - if [ $? -ne 0 ]; then - echo "opea/vllm-gaudi:ci failed" - exit 1 - else - echo "opea/vllm-gaudi:ci successful" - fi -} - - -function main() { - echo "==================== Build agent docker image ====================" - # build_agent_docker_image - build_agent_image_local - echo "==================== Build agent docker image completed ====================" - - echo "==================== Build vllm docker image ====================" - build_vllm_docker_image - echo "==================== Build vllm docker image completed ====================" - - docker image ls | grep vllm -} - -main diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py index ab83f4f08d..a8c73bbd88 100644 --- a/FinanceAgent/tests/test.py +++ b/FinanceAgent/tests/test.py @@ -89,7 +89,6 @@ def test_supervisor_agent_single_turn(args): test_chat_completion_multi_turn(args) else: test_supervisor_agent_single_turn(args) - test_chat_completion_multi_turn(args) elif args.agent_role == "worker": test_worker_agent(args) else: diff --git a/FinanceAgent/tools/supervisor_agent_tools.yaml b/FinanceAgent/tools/supervisor_agent_tools.yaml index 5b8817c5a1..9c9789674e 100644 --- a/FinanceAgent/tools/supervisor_agent_tools.yaml +++ b/FinanceAgent/tools/supervisor_agent_tools.yaml @@ -7,20 +7,20 @@ finqa_agent: description: should include company name and time, for example, which business unit had the highest growth for Microsoft in 2024. return_output: retrieved_data -summarization_agent: - description: generate high-lelvel summary of a financial document. - callable_api: supervisor_tools.py:summarize_doc - args_schema: - doc_title: - type: str - description: the description of the document, should include company name and time, for example, Apple 2023 Q4 earnings call. - return_output: summary +# summarization_agent: +# description: generate high-lelvel summary of a financial document. +# callable_api: supervisor_tools.py:summarize_doc +# args_schema: +# doc_title: +# type: str +# description: the description of the document, should include company name and time, for example, Apple 2023 Q4 earnings call. +# return_output: summary -research_agent: - description: generate research report on a specified company with fundamentals analysis, sentiment analysis and risk analysis. - callable_api: supervisor_tools.py:research_agent - args_schema: - company: - type: str - description: the company name - return_output: report +# research_agent: +# description: generate research report on a specified company with fundamentals analysis, sentiment analysis and risk analysis. +# callable_api: supervisor_tools.py:research_agent +# args_schema: +# company: +# type: str +# description: the company name +# return_output: report From 2c2010981dcda7a46a194215d536645c13d08371 Mon Sep 17 00:00:00 2001 From: rbrugaro Date: Thu, 27 Mar 2025 10:06:58 -0700 Subject: [PATCH 06/20] Summarization agent and updated supervisor (#1722) Signed-off-by: Rita Brugarolas Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- FinanceAgent/README.md | 22 +++- .../intel/hpu/gaudi/compose.yaml | 24 ++++ .../intel/hpu/gaudi/dataprep_compose.yaml | 5 +- .../intel/hpu/gaudi/launch_agents.sh | 10 ++ FinanceAgent/prompts/finqa_prompt.py | 3 + FinanceAgent/prompts/supervisor_prompt.py | 3 + FinanceAgent/tests/test.py | 5 +- FinanceAgent/tests/test_compose_on_gaudi.sh | 2 +- FinanceAgent/tests/test_redis_finance.py | 2 +- FinanceAgent/tools/finqa_agent_tools.yaml | 5 +- FinanceAgent/tools/finqa_tools.py | 38 +++--- FinanceAgent/tools/redis_kv.py | 2 +- FinanceAgent/tools/research_agent_tools.yaml | 2 + FinanceAgent/tools/sum_agent_tools.py | 113 ++++++++++++++++++ .../tools/supervisor_agent_tools.yaml | 22 ++-- FinanceAgent/tools/supervisor_tools.py | 15 ++- FinanceAgent/tools/utils.py | 106 ++++++++-------- 17 files changed, 280 insertions(+), 99 deletions(-) create mode 100644 FinanceAgent/tools/sum_agent_tools.py diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index 36cb8b3a33..e37d3df0e2 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -1,16 +1,20 @@ # Finance Agent -## 1. Overview +## 1. Overview ## 2. Getting started -### 2.1 Dowload repos + +### 2.1 Download repos + ```bash mkdir /path/to/your/workspace/ export WORKDIR=/path/to/your/workspace/ genaicomps genaiexamples ``` + ### 2.2 Set up env vars + ```bash export HF_CACHE_DIR=/path/to/your/model/cache/ export HF_TOKEN= @@ -18,16 +22,20 @@ export HF_TOKEN= ``` ### 2.3 Build docker images + Build docker images for dataprep, agent, agent-ui. + ```bash # use docker image build ``` If deploy on Gaudi, also need to build vllm image. + ```bash cd $WORKDIR git clone https://github.com/HabanaAI/vllm-fork.git # get the latest release tag of vllm gaudi +cd vllm-fork VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") echo "Check out vLLM tag ${VLLM_VER}" git checkout ${VLLM_VER} @@ -35,8 +43,11 @@ docker build --no-cache -f Dockerfile.hpu -t opea/vllm-gaudi:latest --shm-size=1 ``` ## 3. Deploy with docker compose + ### 3.1 Launch vllm endpoint + Below is the command to launch a vllm endpoint on Gaudi that serves `meta-llama/Llama-3.3-70B-Instruct` model on 4 Gaudi cards. + ```bash export vllm_port=8086 export vllm_volume=$HF_CACHE_DIR @@ -44,14 +55,17 @@ export max_length=16384 export model="meta-llama/Llama-3.3-70B-Instruct" docker run -d --runtime=habana --rm --name "vllm-gaudi-server" -e HABANA_VISIBLE_DEVICES=all -p $vllm_port:8000 -v $vllm_volume:/data -e HF_TOKEN=$HF_TOKEN -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN -e HF_HOME=/data -e OMPI_MCA_btl_vader_single_copy_mechanism=none -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e http_proxy=$http_proxy -e https_proxy=$https_proxy -e no_proxy=$no_proxy -e VLLM_SKIP_WARMUP=true --cap-add=sys_nice --ipc=host opea/vllm-gaudi:comps --model ${model} --max-seq-len-to-capture $max_length --tensor-parallel-size 4 ``` + ### 3.2 Prepare knowledge base + The commands below will upload some example files into the knowledge base. You can also upload files through UI. First, launch the redis databases and the dataprep microservice. + ```bash -docker compose -f $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep.yaml up -d +docker compose -f $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml up -d ``` ### 3.3 Launch the multi-agent system -### 3.4 Validate agents +### 3.4 Validate agents diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index ba243dbbec..9a06b965ac 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -95,4 +95,28 @@ services: https_proxy: ${https_proxy} WORKER_FINQA_AGENT_URL: $WORKER_FINQA_AGENT_URL WORKER_RESEARCH_AGENT_URL: $WORKER_RESEARCH_AGENT_URL + #WORKER_SUM_AGENT_URL: $WORKER_SUM_AGENT_URL + DOCSUM_ENDPOINT: $DOCSUM_ENDPOINT + REDIS_URL_VECTOR: $REDIS_URL_VECTOR + REDIS_URL_KV: $REDIS_URL_KV + TEI_EMBEDDING_ENDPOINT: $TEI_EMBEDDING_ENDPOINT port: 9090 + + docsum-vllm-gaudi: + image: opea/llm-docsum:latest + container_name: docsum-vllm-gaudi + ports: + - ${DOCSUM_PORT:-9000}:9000 + ipc: host + environment: + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + LLM_ENDPOINT: ${LLM_ENDPOINT} + LLM_MODEL_ID: ${LLM_MODEL_ID} + HF_TOKEN: ${HF_TOKEN} + LOGFLAG: ${LOGFLAG:-False} + MAX_INPUT_TOKENS: ${MAX_INPUT_TOKENS} + MAX_TOTAL_TOKENS: ${MAX_TOTAL_TOKENS} + DocSum_COMPONENT_NAME: ${DocSum_COMPONENT_NAME:-OpeaDocSumvLLM} + restart: unless-stopped diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml index a1f78bebab..5e4333c7d2 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml @@ -22,7 +22,7 @@ services: interval: 10s timeout: 6s retries: 48 - + redis-vector-db: image: redis/redis-stack:7.2.0-v9 container_name: redis-vector-db @@ -54,7 +54,7 @@ services: timeout: 10s retries: 3 start_period: 10s - + dataprep-redis-finance: image: ${REGISTRY:-opea}/dataprep:${TAG:-latest} container_name: dataprep-redis-server-finance @@ -80,4 +80,3 @@ services: HUGGINGFACEHUB_API_TOKEN: ${HF_TOKEN} HF_TOKEN: ${HF_TOKEN} LOGFLAG: true - diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh index cc2d979f21..9a97cfd631 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh @@ -1,9 +1,13 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + export ip_address=$(hostname -I | awk '{print $1}') export HUGGINGFACEHUB_API_TOKEN=${HF_TOKEN} export TOOLSET_PATH=$WORKDIR/GenAIExamples/FinanceAgent/tools/ echo "TOOLSET_PATH=${TOOLSET_PATH}" export PROMPT_PATH=$WORKDIR/GenAIExamples/FinanceAgent/prompts/ +echo "PROMPT_PATH=${PROMPT_PATH}" export recursion_limit_worker=12 export recursion_limit_supervisor=10 @@ -16,10 +20,16 @@ export MAX_TOKENS=4096 export WORKER_FINQA_AGENT_URL="http://${ip_address}:9095/v1/chat/completions" export WORKER_RESEARCH_AGENT_URL="http://${ip_address}:9096/v1/chat/completions" +export EMBEDDING_MODEL_ID="BAAI/bge-base-en-v1.5" export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:10221" export REDIS_URL_VECTOR="redis://${ip_address}:6379" export REDIS_URL_KV="redis://${ip_address}:6380" +export MAX_INPUT_TOKENS=2048 +export MAX_TOTAL_TOKENS=4096 +export DocSum_COMPONENT_NAME="OpeaDocSumvLLM" +export DOCSUM_ENDPOINT="http://${ip_address}:9000/v1/docsum" + docker compose -f compose.yaml up -d diff --git a/FinanceAgent/prompts/finqa_prompt.py b/FinanceAgent/prompts/finqa_prompt.py index 877aa342ed..9dda6dc22c 100644 --- a/FinanceAgent/prompts/finqa_prompt.py +++ b/FinanceAgent/prompts/finqa_prompt.py @@ -1,3 +1,6 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + REACT_AGENT_LLAMA_PROMPT = """\ You are a helpful assistant engaged in multi-turn conversations with Financial analysts. You have access to the following two tools: diff --git a/FinanceAgent/prompts/supervisor_prompt.py b/FinanceAgent/prompts/supervisor_prompt.py index cf5883da80..404ba1a481 100644 --- a/FinanceAgent/prompts/supervisor_prompt.py +++ b/FinanceAgent/prompts/supervisor_prompt.py @@ -1,3 +1,6 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + REACT_AGENT_LLAMA_PROMPT = """\ You are a helpful assistant engaged in multi-turn conversations with users. You have the following worker agents working for you. You can call them as calling tools. diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py index a8c73bbd88..5162a58f67 100644 --- a/FinanceAgent/tests/test.py +++ b/FinanceAgent/tests/test.py @@ -57,6 +57,7 @@ def test_chat_completion_multi_turn(args): add_message_and_run(url, user_message, thread_id, stream=args.stream) print("===============End of second turn==================") + def test_supervisor_agent_single_turn(args): url = f"http://{args.ip_addr}:{args.ext_port}/v1/chat/completions" query_list = [ @@ -67,9 +68,7 @@ def test_supervisor_agent_single_turn(args): for query in query_list: thread_id = f"{uuid.uuid4()}" add_message_and_run(url, query, thread_id, stream=args.stream) - print("="*50) - - + print("=" * 50) if __name__ == "__main__": diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index d7d0826a1c..e232008887 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -150,7 +150,7 @@ function stop_dataprep() { echo "Stopping databases" cid=$(docker ps -aq --filter "name=dataprep-redis-server*" --filter "name=redis-*" --filter "name=tei-embedding-*") if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi - + } function start_agents() { diff --git a/FinanceAgent/tests/test_redis_finance.py b/FinanceAgent/tests/test_redis_finance.py index f98360d69a..b62d4deb2d 100644 --- a/FinanceAgent/tests/test_redis_finance.py +++ b/FinanceAgent/tests/test_redis_finance.py @@ -67,4 +67,4 @@ def test_get(url): url = f"http://localhost:{port}/v1/dataprep/get" test_get(url) else: - raise ValueError("Invalid test_option value. Please choose from ingest, get, delete.") \ No newline at end of file + raise ValueError("Invalid test_option value. Please choose from ingest, get, delete.") diff --git a/FinanceAgent/tools/finqa_agent_tools.yaml b/FinanceAgent/tools/finqa_agent_tools.yaml index bcc5cfd1c0..c118e222a2 100644 --- a/FinanceAgent/tools/finqa_agent_tools.yaml +++ b/FinanceAgent/tools/finqa_agent_tools.yaml @@ -1,3 +1,6 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + search_knowledge_base: description: Search knowledge base of SEC filings. callable_api: finqa_tools.py:get_context_bm25_llm @@ -14,4 +17,4 @@ search_knowledge_base: quarter: type: str description: the quarter of interest, can only specify one quarter. can be 'Q1', 'Q2', 'Q3', 'Q4'. can be an empty string. - return_output: retrieved_data \ No newline at end of file + return_output: retrieved_data diff --git a/FinanceAgent/tools/finqa_tools.py b/FinanceAgent/tools/finqa_tools.py index 55ea015d87..57a0ff95d0 100644 --- a/FinanceAgent/tools/finqa_tools.py +++ b/FinanceAgent/tools/finqa_tools.py @@ -1,24 +1,28 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + from tools.utils import * -def get_context_bm25_llm(query, company, year, quarter = ""): + +def get_context_bm25_llm(query, company, year, quarter=""): k = 5 - + company_list = get_company_list() company = get_company_name_in_kb(company, company_list) if "Cannot find" in company or "Database is empty" in company: return company - + print(f"Company: {company}") # chunks - index_name=f"chunks_{company}" + index_name = f"chunks_{company}" vector_store = get_vectorstore(index_name) chunks_bm25 = bm25_search_broad(query, company, year, quarter, k=k, doc_type="chunks") chunks_sim = similarity_search(vector_store, k, query, company, year, quarter) chunks = chunks_bm25 + chunks_sim - + # tables try: - index_name=f"tables_{company}" + index_name = f"tables_{company}" vector_store_table = get_vectorstore(index_name) # get tables matching metadata tables_bm25 = bm25_search_broad(query, company, year, quarter, k=k, doc_type="tables") @@ -28,7 +32,7 @@ def get_context_bm25_llm(query, company, year, quarter = ""): tables = [] # get unique results - context = get_unique_docs(chunks+tables) + context = get_unique_docs(chunks + tables) print("Context:\n", context[:500]) if context: @@ -50,7 +54,7 @@ def search_full_doc(query, company): company = get_company_name_in_kb(company, company_list) if "Cannot find" in company or "Database is empty" in company: return company - + # search most similar doc title index_name = f"titles_{company}" vector_store = get_vectorstore_titles(index_name) @@ -60,8 +64,8 @@ def search_full_doc(query, company): doc = docs[0] doc_title = doc.page_content print(f"Most similar doc title: {doc_title}") - - kvstore= RedisKVStore(redis_uri=REDIS_URL_KV) + + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) doc = kvstore.get(doc_title, f"full_doc_{company}") content = doc["full_doc"] doc_length = doc["doc_length"] @@ -80,17 +84,17 @@ def search_full_doc(query, company): # year="2024" # quarter="Q4" - company="Costco" - year="2025" - quarter="Q2" + company = "Costco" + year = "2025" + quarter = "Q2" - collection_name=f"chunks_{company}" + collection_name = f"chunks_{company}" search_metadata = ("company", company) - + resp = get_context_bm25_llm("revenue", company, year, quarter) print("***Response:\n", resp) - print("="*50) + print("=" * 50) print("testing retrieve full doc") query = f"{company} {year} {quarter} earning call" - search_full_doc(query, company) \ No newline at end of file + search_full_doc(query, company) diff --git a/FinanceAgent/tools/redis_kv.py b/FinanceAgent/tools/redis_kv.py index 9f88d02a6b..3ded5bffdb 100644 --- a/FinanceAgent/tools/redis_kv.py +++ b/FinanceAgent/tools/redis_kv.py @@ -143,4 +143,4 @@ def from_host_and_port( port (int): Redis port """ url = f"redis://{host}:{port}".format(host=host, port=port) - return cls(redis_uri=url) \ No newline at end of file + return cls(redis_uri=url) diff --git a/FinanceAgent/tools/research_agent_tools.yaml b/FinanceAgent/tools/research_agent_tools.yaml index e69de29bb2..4057dc0163 100644 --- a/FinanceAgent/tools/research_agent_tools.yaml +++ b/FinanceAgent/tools/research_agent_tools.yaml @@ -0,0 +1,2 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 diff --git a/FinanceAgent/tools/sum_agent_tools.py b/FinanceAgent/tools/sum_agent_tools.py new file mode 100644 index 0000000000..6c502c13cf --- /dev/null +++ b/FinanceAgent/tools/sum_agent_tools.py @@ -0,0 +1,113 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import json + +import requests +from tools.redis_kv import RedisKVStore +from tools.utils import * + + +def get_summary_else_doc(query, company): + company = company.upper() + + # decide if company is in company list + company_list = get_company_list() + print(f"company_list {company_list}") + company = get_company_name_in_kb(company, company_list) + if "Cannot find" in company or "Database is empty" in company: + print(f"Company not found in knowledge base: {company}") + return company + print(f"Company {company}") + + # search most similar doc title + index_name = f"titles_{company}" + vector_store = get_vectorstore_titles(index_name) + k = 1 + docs = vector_store.similarity_search(query, k=k) + if docs: + doc = docs[0] + doc_title = doc.page_content + print(f"Most similar doc title: {doc_title}") + + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) + doc = kvstore.get(doc_title, f"full_doc_{company}") + doc_length = doc["doc_length"] + print(f"Doc length: {doc_length}") + if "summary" not in doc: + content = doc["full_doc"] + print(f"is_summary: {False}") + is_summary = False + return doc_title, content, is_summary + content = doc["summary"] + is_summary = True + print(f"Summary already exists in KV store: {is_summary}") + return doc_title, content, is_summary + + +def save_doc_summary(summary, doc_title, company): + """Adds a summary to the existing document in the key-value store. + + Args: + kvstore: The key-value store instance. + summary: The summary to be added. + doc_title: The title of the document. + company: The company associated with the document. + """ + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) + doc_dict = kvstore.get(doc_title, f"full_doc_{company}") + + # Add the summary to the dictionary + doc_dict["summary"] = summary + + # Save the updated value back to the store + kvstore.put(doc_title, doc_dict, collection=f"full_doc_{company}") + + +def summarize(doc_name, company): + ip_address = os.environ.get("ip_address") + # docsum_url = f"http://{ip_address}:9000/v1/docsum" + docsum_url = os.environ.get("DOCSUM_ENDPOINT") + print(f"Docsum Endpoint URL: {docsum_url}") + + doc_title, sum, is_summary = get_summary_else_doc(doc_name, company) + print(f"Summary or full doc from get_summary_else_doc: {sum[:100]} \n -------\n") + if not is_summary: + data = { + "messages": sum, + "max_tokens": 512, + "language": "en", + "stream": False, + "summary_type": "auto", + "chunk_size": 2000, + } + + headers = {"Content-Type": "application/json"} + try: + print("Computing Summary with OPEA DocSum...") + resp = requests.post(url=docsum_url, data=json.dumps(data), headers=headers) + ret = resp.text + resp.raise_for_status() # Raise an exception for unsuccessful HTTP status codes + except requests.exceptions.RequestException as e: + ret = f"An error occurred:{e}" + # save summary into db + print("Saving Summary into KV Store...") + save_doc_summary(ret, doc_title, company) + return ret + else: + return sum + + +if __name__ == "__main__": + company = "Gap" + year = "2024" + quarter = "Q4" + + # company="Costco" + # year="2025" + # quarter="Q2" + + print("testing summarize") + doc_name = f"{company} {year} {quarter} earning call" + summarize(doc_name, company) + print("=" * 50) diff --git a/FinanceAgent/tools/supervisor_agent_tools.yaml b/FinanceAgent/tools/supervisor_agent_tools.yaml index 9c9789674e..0b451557e3 100644 --- a/FinanceAgent/tools/supervisor_agent_tools.yaml +++ b/FinanceAgent/tools/supervisor_agent_tools.yaml @@ -1,3 +1,6 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + finqa_agent: description: answer financial questions about a company. callable_api: supervisor_tools.py:finqa_agent @@ -7,14 +10,17 @@ finqa_agent: description: should include company name and time, for example, which business unit had the highest growth for Microsoft in 2024. return_output: retrieved_data -# summarization_agent: -# description: generate high-lelvel summary of a financial document. -# callable_api: supervisor_tools.py:summarize_doc -# args_schema: -# doc_title: -# type: str -# description: the description of the document, should include company name and time, for example, Apple 2023 Q4 earnings call. -# return_output: summary +summarization_tool: + description: Searches KV store for summary, if it doesn't exist pulls full document and summarize it + callable_api: sum_agent_tools.py:summarize + args_schema: + doc_name: + type: str + description: Descriptive name of the document + company: + type: str + description: Name of the company document belongs to + return_output: summary # research_agent: # description: generate research report on a specified company with fundamentals analysis, sentiment analysis and risk analysis. diff --git a/FinanceAgent/tools/supervisor_tools.py b/FinanceAgent/tools/supervisor_tools.py index 68b9215142..5bddc16bcd 100644 --- a/FinanceAgent/tools/supervisor_tools.py +++ b/FinanceAgent/tools/supervisor_tools.py @@ -1,7 +1,12 @@ -import requests +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os -def finqa_agent(query:str): +import requests + + +def finqa_agent(query: str): url = os.environ.get("WORKER_FINQA_AGENT_URL") print(url) proxies = {"http": ""} @@ -11,10 +16,8 @@ def finqa_agent(query:str): response = requests.post(url, json=payload, proxies=proxies) return response.json()["text"] -def summarize_doc(doc_title): - pass -def research_agent(company:str): +def research_agent(company: str): url = os.environ.get("WORKER_RESEARCH_AGENT_URL") print(url) proxies = {"http": ""} @@ -22,4 +25,4 @@ def research_agent(company:str): "messages": company, } response = requests.post(url, json=payload, proxies=proxies) - return response.json()["text"] \ No newline at end of file + return response.json()["text"] diff --git a/FinanceAgent/tools/utils.py b/FinanceAgent/tools/utils.py index fb0679f6e7..ba3820ca54 100644 --- a/FinanceAgent/tools/utils.py +++ b/FinanceAgent/tools/utils.py @@ -1,14 +1,18 @@ -from langchain_community.retrievers import BM25Retriever -from langchain_redis import RedisConfig, RedisVectorStore -from langchain_core.documents import Document -from tools.redis_kv import RedisKVStore +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + import os -from openai import OpenAI + from langchain_community.embeddings import HuggingFaceBgeEmbeddings +from langchain_community.retrievers import BM25Retriever +from langchain_core.documents import Document from langchain_huggingface import HuggingFaceEndpointEmbeddings +from langchain_redis import RedisConfig, RedisVectorStore +from openai import OpenAI +from tools.redis_kv import RedisKVStore # Embedding model -EMBED_MODEL = os.getenv("EMBED_MODEL", "BAAI/bge-base-en-v1.5") +EMBED_MODEL = os.getenv("EMBED_MODEL", "BAAI/bge-base-en-v1.5") TEI_EMBEDDING_ENDPOINT = os.getenv("TEI_EMBEDDING_ENDPOINT", "") # Redis URL @@ -16,19 +20,19 @@ REDIS_URL_KV = os.getenv("REDIS_URL_KV", "redis://localhost:6380/") # LLM config -LLM_MODEL=os.getenv("model", "meta-llama/Llama-3.3-70B-Instruct") -LLM_ENDPOINT=os.getenv("llm_endpoint_url", "http://localhost:8086") +LLM_MODEL = os.getenv("model", "meta-llama/Llama-3.3-70B-Instruct") +LLM_ENDPOINT = os.getenv("llm_endpoint_url", "http://localhost:8086") print(f"LLM endpoint: {LLM_ENDPOINT}") MAX_TOKENS = 1024 TEMPERATURE = 0.2 -COMPANY_NAME_PROMPT="""\ +COMPANY_NAME_PROMPT = """\ Here is the list of company names in the knowledge base: {company_list} This is the company of interest: {company} -Determine if the company of interest is the same as any of the companies in the knowledge base. +Determine if the company of interest is the same as any of the companies in the knowledge base. If yes, map the company of interest to the company name in the knowledge base. Output the company name in {{}}. Example: {{3M}}. If none of the companies in the knowledge base match the company of interest, output "NONE". """ @@ -42,6 +46,7 @@ Now take a deep breath and think step by step to answer the question. Wrap your final answer in {{}}. Example: {{The company has a revenue of $100 million.}} """ + def get_embedder(): if TEI_EMBEDDING_ENDPOINT: # create embeddings using TEI endpoint service @@ -54,10 +59,9 @@ def get_embedder(): embedder = HuggingFaceBgeEmbeddings(model_name=EMBED_MODEL) return embedder + def generate_answer(prompt): - """ - Use vllm endpoint to generate the answer - """ + """Use vllm endpoint to generate the answer.""" # send request to vllm endpoint client = OpenAI( base_url=f"{LLM_ENDPOINT}/v1", @@ -70,12 +74,8 @@ def generate_answer(prompt): } completion = client.chat.completions.create( - model=LLM_MODEL, - messages=[ - {"role": "user", "content": prompt} - ], - **params - ) + model=LLM_MODEL, messages=[{"role": "user", "content": prompt}], **params + ) # get response response = completion.choices[0].message.content @@ -99,15 +99,16 @@ def get_company_list(): return company_list else: return [] - + + def get_company_name_in_kb(company, company_list): if not company_list: return "Database is empty." - + company = company.upper() if company in company_list: return company - + prompt = COMPANY_NAME_PROMPT.format(company_list=company_list, company=company) response = generate_answer(prompt) if "NONE" in response.upper(): @@ -119,6 +120,7 @@ def get_company_name_in_kb(company, company_list): else: return "Failed to parse LLM response." + def get_docs_matching_metadata(metadata, collection_name): """ metadata: ("company_year", "3M_2023") @@ -126,8 +128,8 @@ def get_docs_matching_metadata(metadata, collection_name): """ key = metadata[0] value = metadata[1] - kvstore= RedisKVStore(redis_uri=REDIS_URL_KV) - collection = kvstore.get_all(collection_name) # collection is a dict + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) + collection = kvstore.get_all(collection_name) # collection is a dict matching_docs = [] for idx in collection: @@ -138,7 +140,8 @@ def get_docs_matching_metadata(metadata, collection_name): matching_docs.append(doc) print(f"Number of docs found with search_metadata {metadata}: {len(matching_docs)}") return matching_docs - + + def convert_docs(docs): # docs: list of dicts converted_docs_content = [] @@ -146,24 +149,17 @@ def convert_docs(docs): for doc in docs: content = doc["content"] # convert content to Document object - metadata = {"type":"content",**doc["metadata"]} - converted_content = Document( - id = doc["metadata"]["doc_id"], - page_content=content, - metadata=metadata - ) - + metadata = {"type": "content", **doc["metadata"]} + converted_content = Document(id=doc["metadata"]["doc_id"], page_content=content, metadata=metadata) + # convert summary to Document object - metadata = {"type":"summary", "content":content, **doc["metadata"]} - converted_summary = Document( - id = doc["metadata"]["doc_id"], - page_content=doc["summary"], - metadata=metadata - ) + metadata = {"type": "summary", "content": content, **doc["metadata"]} + converted_summary = Document(id=doc["metadata"]["doc_id"], page_content=doc["summary"], metadata=metadata) converted_docs_content.append(converted_content) converted_docs_summary.append(converted_summary) return converted_docs_content, converted_docs_summary + def bm25_search(query, metadata, company, doc_type="chunks", k=10): collection_name = f"{doc_type}_{company}" print(f"Collection name: {collection_name}") @@ -189,21 +185,21 @@ def bm25_search(query, metadata, company, doc_type="chunks", k=10): def bm25_search_broad(query, company, year, quarter, k=10, doc_type="chunks"): # search with company filter, but query is query_company_quarter - metadata = ("company",f"{company}") + metadata = ("company", f"{company}") query1 = f"{query} {year} {quarter}" docs1 = bm25_search(query1, metadata, company, k=k, doc_type=doc_type) # search with metadata filters - metadata = ("company_year_quarter",f"{company}_{year}_{quarter}") + metadata = ("company_year_quarter", f"{company}_{year}_{quarter}") print(f"BM25: Searching for docs with metadata: {metadata}") docs = bm25_search(query, metadata, company, k=k, doc_type=doc_type) if not docs: print("BM25: No docs found with company, year and quarter filter, only search with company and year filter") - metadata = ("company_year",f"{company}_{year}") + metadata = ("company_year", f"{company}_{year}") docs = bm25_search(query, metadata, company, k=k, doc_type=doc_type) if not docs: print("BM25: No docs found with company and year filter, only search with company filter") - metadata = ("company",f"{company}") + metadata = ("company", f"{company}") docs = bm25_search(query, metadata, company, k=k, doc_type=doc_type) docs = docs + docs1 @@ -216,11 +212,13 @@ def bm25_search_broad(query, company, year, quarter, k=10, doc_type="chunks"): def set_filter(metadata_filter): # metadata_filter: tuple of (key, value) from redisvl.query.filter import Text + key = metadata_filter[0] value = metadata_filter[1] filter_condition = Text(key) == value return filter_condition + def similarity_search(vector_store, k, query, company, year, quarter=None): query1 = f"{query} {year} {quarter}" filter_condition = set_filter(("company", company)) @@ -229,17 +227,17 @@ def similarity_search(vector_store, k, query, company, year, quarter=None): filter_condition = set_filter(("company_year_quarter", f"{company}_{year}_{quarter}")) docs = vector_store.similarity_search(query, k=k, filter=filter_condition) - - if not docs: # if no relevant document found, relax the filter - print("No relevant document found with company, year and quarter filter, only search with comany and year") + + if not docs: # if no relevant document found, relax the filter + print("No relevant document found with company, year and quarter filter, only search with company and year") filter_condition = set_filter(("company_year", f"{company}_{year}")) docs = vector_store.similarity_search(query, k=k, filter=filter_condition) - - if not docs: # if no relevant document found, relax the filter - print("No relevant document found with company_year filter, only serach with company.....") + + if not docs: # if no relevant document found, relax the filter + print("No relevant document found with company_year filter, only search with company.....") filter_condition = set_filter(("company", company)) docs = vector_store.similarity_search(query, k=k, filter=filter_condition) - + print(f"Similarity search: Found {len(docs)} docs with filter and query: {query}") docs = docs + docs1 @@ -248,6 +246,7 @@ def similarity_search(vector_store, k, query, company, year, quarter=None): else: return docs + def get_index_name(doc_type: str, metadata: dict): company = metadata["company"] if doc_type == "chunks": @@ -262,6 +261,7 @@ def get_index_name(doc_type: str, metadata: dict): raise ValueError("doc_type should be either chunks, tables, titles, or full_doc.") return index_name + def get_content(doc): # doc can be converted doc # of saved doc in vector store @@ -273,20 +273,20 @@ def get_content(doc): content = doc.page_content else: print("Dense retriever doc...") - + doc_id = doc.metadata["doc_id"] # doc_summary=doc.page_content kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) collection_name = get_index_name(doc.metadata["doc_type"], doc.metadata) result = kvstore.get(doc_id, collection_name) content = result["content"] - + # print(f"***Doc Metadata:\n{doc.metadata}") # print(f"***Content: {content[:100]}...") return content - + def get_unique_docs(docs): results = [] context = "" @@ -340,5 +340,3 @@ def get_vectorstore_titles(index_name): embedder = get_embedder() vector_store = RedisVectorStore(embedder, config=config) return vector_store - - From 434bbdf3fcf0fe3fd0b17883201ad8ca5ff5c01b Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Wed, 2 Apr 2025 19:13:53 +0000 Subject: [PATCH 07/20] fix summarization tool error Signed-off-by: minmin-intel --- .../intel/hpu/gaudi/compose.yaml | 1 - FinanceAgent/tests/test.py | 2 +- FinanceAgent/tests/test_compose_on_gaudi.sh | 27 +++++-- FinanceAgent/tools/sum_agent_tools.py | 79 ++++++++++--------- FinanceAgent/tools/utils.py | 16 +++- 5 files changed, 75 insertions(+), 50 deletions(-) diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index 9a06b965ac..084f98b29d 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -95,7 +95,6 @@ services: https_proxy: ${https_proxy} WORKER_FINQA_AGENT_URL: $WORKER_FINQA_AGENT_URL WORKER_RESEARCH_AGENT_URL: $WORKER_RESEARCH_AGENT_URL - #WORKER_SUM_AGENT_URL: $WORKER_SUM_AGENT_URL DOCSUM_ENDPOINT: $DOCSUM_ENDPOINT REDIS_URL_VECTOR: $REDIS_URL_VECTOR REDIS_URL_KV: $REDIS_URL_KV diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py index 5162a58f67..e8fed1c85f 100644 --- a/FinanceAgent/tests/test.py +++ b/FinanceAgent/tests/test.py @@ -63,7 +63,7 @@ def test_supervisor_agent_single_turn(args): query_list = [ "What was Gap's revenue growth in 2024?", "Can you summarize Costco's 2025 Q2 earnings call?", - "Should I increase investment in Costco?", + # "Should I increase investment in Costco?", ] for query in query_list: thread_id = f"{uuid.uuid4()}" diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index e232008887..e14262dc03 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -7,12 +7,14 @@ export WORKPATH=$(dirname "$PWD") export WORKDIR=$WORKPATH/../../ echo "WORKDIR=${WORKDIR}" export ip_address=$(hostname -I | awk '{print $1}') +LOG_PATH=$WORKPATH #### env vars for LLM endpoint ############# model=meta-llama/Llama-3.3-70B-Instruct +vllm_image=opea/vllm-gaudi:latest vllm_port=8086 vllm_image=$vllm_image -HF_CACHE_DIR=/data2/huggingface +# HF_CACHE_DIR=/data2/huggingface vllm_volume=${HF_CACHE_DIR} ####################################### @@ -29,7 +31,6 @@ export EMBEDDING_MODEL_ID="BAAI/bge-base-en-v1.5" export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:${TEI_EMBEDDER_PORT}" ####################################### -#### env vars for agent ############# function get_genai_comps() { @@ -163,7 +164,7 @@ function start_agents() { function validate_agent_service() { # # test worker finqa agent - echo "======================Testing worker rag agent======================" + echo "======================Testing worker finqa agent======================" export agent_port="9095" prompt="What is Gap's revenue in 2024?" local CONTENT=$(python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port) @@ -194,8 +195,8 @@ function validate_agent_service() { echo "======================Testing supervisor agent: single turns ======================" export agent_port="9090" local CONTENT=$(python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --stream) - # echo $CONTENT - # local EXIT_CODE=$(validate "$CONTENT" "Iron" "react-agent-endpoint") + echo $CONTENT + # local EXIT_CODE=$(validate "$CONTENT" "" "react-agent-endpoint") # echo $EXIT_CODE # local EXIT_CODE="${EXIT_CODE:0-1}" # if [ "$EXIT_CODE" == "1" ]; then @@ -203,6 +204,16 @@ function validate_agent_service() { # exit 1 # fi + echo "======================Testing supervisor agent: multi turns ======================" + local CONTENT=$(python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --multi-turn --stream) + echo $CONTENT + # local EXIT_CODE=$(validate "$CONTENT" "" "react-agent-endpoint") + # echo $EXIT_CODE + # local EXIT_CODE="${EXIT_CODE:0-1}" + # if [ "$EXIT_CODE" == "1" ]; then + # docker logs react-agent-endpoint + # exit 1 + # fi } function stop_agent_docker() { @@ -220,7 +231,7 @@ echo "workpath: $WORKPATH" # echo "=================== Stop containers ====================" # stop_llm stop_agent_docker -# stop_dataprep +stop_dataprep cd $WORKPATH/tests @@ -237,8 +248,8 @@ cd $WORKPATH/tests # echo "=================== #2 vllm endpoint started====================" # echo "=================== #3 Start dataprep and ingest data ====================" -# start_dataprep -# ingest_validate_dataprep +start_dataprep +ingest_validate_dataprep # echo "=================== #3 Data ingestion and validation completed====================" echo "=================== #4 Start agents ====================" diff --git a/FinanceAgent/tools/sum_agent_tools.py b/FinanceAgent/tools/sum_agent_tools.py index 6c502c13cf..5760650d80 100644 --- a/FinanceAgent/tools/sum_agent_tools.py +++ b/FinanceAgent/tools/sum_agent_tools.py @@ -4,22 +4,16 @@ import json import requests -from tools.redis_kv import RedisKVStore -from tools.utils import * +try: + from tools.redis_kv import RedisKVStore + from tools.utils import * +except ImportError: + from redis_kv import RedisKVStore + from utils import * -def get_summary_else_doc(query, company): - company = company.upper() - - # decide if company is in company list - company_list = get_company_list() - print(f"company_list {company_list}") - company = get_company_name_in_kb(company, company_list) - if "Cannot find" in company or "Database is empty" in company: - print(f"Company not found in knowledge base: {company}") - return company - print(f"Company {company}") +def get_summary_else_doc(query, company): # search most similar doc title index_name = f"titles_{company}" vector_store = get_vectorstore_titles(index_name) @@ -30,18 +24,22 @@ def get_summary_else_doc(query, company): doc_title = doc.page_content print(f"Most similar doc title: {doc_title}") - kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) - doc = kvstore.get(doc_title, f"full_doc_{company}") - doc_length = doc["doc_length"] - print(f"Doc length: {doc_length}") - if "summary" not in doc: - content = doc["full_doc"] - print(f"is_summary: {False}") + kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) + try: + # Check if summary already exists in the KV store + content = kvstore.get(f"{doc_title}_summary", f"full_doc_{company}")["summary"] + is_summary = True + print("Summary already exists in KV store.") + except Exception as e: + doc = kvstore.get(doc_title, f"full_doc_{company}") + content = doc["full_doc"] + is_summary = False + print("No summary found in KV store, returning full document content.") + else: + print(f"No similar document found for query: {query}") + doc_title = None + content = None is_summary = False - return doc_title, content, is_summary - content = doc["summary"] - is_summary = True - print(f"Summary already exists in KV store: {is_summary}") return doc_title, content, is_summary @@ -55,23 +53,25 @@ def save_doc_summary(summary, doc_title, company): company: The company associated with the document. """ kvstore = RedisKVStore(redis_uri=REDIS_URL_KV) - doc_dict = kvstore.get(doc_title, f"full_doc_{company}") + # doc_dict = kvstore.get(doc_title, f"full_doc_{company}") - # Add the summary to the dictionary - doc_dict["summary"] = summary + # # Add the summary to the dictionary + # doc_dict["summary"] = summary # Save the updated value back to the store - kvstore.put(doc_title, doc_dict, collection=f"full_doc_{company}") + kvstore.put(f"{doc_title}_summary", {"summary":summary}, collection=f"full_doc_{company}") def summarize(doc_name, company): - ip_address = os.environ.get("ip_address") - # docsum_url = f"http://{ip_address}:9000/v1/docsum" docsum_url = os.environ.get("DOCSUM_ENDPOINT") print(f"Docsum Endpoint URL: {docsum_url}") + company = format_company_name(company) + doc_title, sum, is_summary = get_summary_else_doc(doc_name, company) - print(f"Summary or full doc from get_summary_else_doc: {sum[:100]} \n -------\n") + if not doc_title: + return(f"Cannot find documents related to {doc_title} in KV store.") + if not is_summary: data = { "messages": sum, @@ -86,7 +86,7 @@ def summarize(doc_name, company): try: print("Computing Summary with OPEA DocSum...") resp = requests.post(url=docsum_url, data=json.dumps(data), headers=headers) - ret = resp.text + ret = resp.json()["text"] resp.raise_for_status() # Raise an exception for unsuccessful HTTP status codes except requests.exceptions.RequestException as e: ret = f"An error occurred:{e}" @@ -99,15 +99,16 @@ def summarize(doc_name, company): if __name__ == "__main__": - company = "Gap" - year = "2024" - quarter = "Q4" + # company = "Gap" + # year = "2024" + # quarter = "Q4" - # company="Costco" - # year="2025" - # quarter="Q2" + company="Costco" + year="2025" + quarter="Q2" print("testing summarize") doc_name = f"{company} {year} {quarter} earning call" - summarize(doc_name, company) + ret = summarize(doc_name, company) + print("Summary: ", ret) print("=" * 50) diff --git a/FinanceAgent/tools/utils.py b/FinanceAgent/tools/utils.py index ba3820ca54..7b70289ac3 100644 --- a/FinanceAgent/tools/utils.py +++ b/FinanceAgent/tools/utils.py @@ -9,7 +9,10 @@ from langchain_huggingface import HuggingFaceEndpointEmbeddings from langchain_redis import RedisConfig, RedisVectorStore from openai import OpenAI -from tools.redis_kv import RedisKVStore +try: + from tools.redis_kv import RedisKVStore +except ImportError: + from redis_kv import RedisKVStore # Embedding model EMBED_MODEL = os.getenv("EMBED_MODEL", "BAAI/bge-base-en-v1.5") @@ -46,6 +49,17 @@ Now take a deep breath and think step by step to answer the question. Wrap your final answer in {{}}. Example: {{The company has a revenue of $100 million.}} """ +def format_company_name(company): + company = company.upper() + + # decide if company is in company list + company_list = get_company_list() + print(f"company_list {company_list}") + company = get_company_name_in_kb(company, company_list) + if "Cannot find" in company or "Database is empty" in company: + raise ValueError(f"Company not found in knowledge base: {company}") + print(f"Company: {company}") + return company def get_embedder(): if TEI_EMBEDDING_ENDPOINT: From 2fa357c664b6891c3f4c36105616434368ceecf8 Mon Sep 17 00:00:00 2001 From: lkk <33276950+lkk12014402@users.noreply.github.com> Date: Thu, 3 Apr 2025 22:09:04 +0800 Subject: [PATCH 08/20] Add financial research agent. (#1738) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../intel/hpu/gaudi/compose.yaml | 55 +++---- FinanceAgent/prompts/research_prompt.py | 52 ++++++ FinanceAgent/tests/test_compose_on_gaudi.sh | 26 +-- FinanceAgent/tools/research_agent_tools.yaml | 45 +++++ FinanceAgent/tools/research_tools.py | 154 ++++++++++++++++++ 5 files changed, 291 insertions(+), 41 deletions(-) create mode 100644 FinanceAgent/prompts/research_prompt.py create mode 100644 FinanceAgent/tools/research_tools.py diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index 084f98b29d..f5b2937af0 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -34,34 +34,33 @@ services: TEI_EMBEDDING_ENDPOINT: $TEI_EMBEDDING_ENDPOINT port: 9095 - # worker-research-agent: - # image: opea/agent:latest - # container_name: research-agent-endpoint - # volumes: - # - ${TOOLSET_PATH}:/home/user/tools/ - # - ${PROMPT_PATH}:/home/user/prompts/ - # ports: - # - "9096:9096" - # ipc: host - # environment: - # ip_address: ${ip_address} - # strategy: react_llama - # with_memory: false - # recursion_limit: ${recursion_limit_worker} - # llm_engine: vllm - # HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} - # llm_endpoint_url: ${LLM_ENDPOINT_URL} - # model: ${LLM_MODEL_ID} - # temperature: ${TEMPERATURE} - # max_new_tokens: ${MAX_TOKENS} - # stream: false - # tools: /home/user/tools/research_agent_tools.yaml - # custom_prompt: /home/user/prompts/research_prompt.py - # require_human_feedback: false - # no_proxy: ${no_proxy} - # http_proxy: ${http_proxy} - # https_proxy: ${https_proxy} - # port: 9096 + worker-research-agent: + image: opea/agent:latest + container_name: research-agent-endpoint + volumes: + - ${TOOLSET_PATH}:/home/user/tools/ + - ${PROMPT_PATH}:/home/user/prompts/ + ports: + - "9096:9096" + ipc: host + environment: + ip_address: ${ip_address} + strategy: react_llama + with_memory: false + recursion_limit: ${recursion_limit_worker} + llm_engine: vllm + HUGGINGFACEHUB_API_TOKEN: ${HUGGINGFACEHUB_API_TOKEN} + llm_endpoint_url: ${LLM_ENDPOINT_URL} + model: ${LLM_MODEL_ID} + stream: false + tools: /home/user/tools/research_agent_tools.yaml + custom_prompt: /home/user/prompts/research_prompt.py + require_human_feedback: false + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + FINNHUB_API_KEY: ${FINNHUB_API_KEY} + port: 9096 supervisor-react-agent: image: opea/agent:latest diff --git a/FinanceAgent/prompts/research_prompt.py b/FinanceAgent/prompts/research_prompt.py new file mode 100644 index 0000000000..4d01cb264f --- /dev/null +++ b/FinanceAgent/prompts/research_prompt.py @@ -0,0 +1,52 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +REACT_AGENT_LLAMA_PROMPT = """\ +You are a Market Analyst, one must possess strong analytical and problem-solving abilities, collect necessary financial information and aggregate them based on client's requirement. For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done. + + +You have access to the following tools: +{tools} + +For a comprehensive analysis, you can use all the tools provided to retrieve information available for the company. + +**Procedure:** +1. Read the question carefully. To get the company news, financial histories, some related tools need `start_date` and `end_date, you can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. +2. Analyze the positive developments and potential concerns of the company with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. +3. Make a rough prediction (e.g. up/down by 2-3%) of the NVDA stock price movement for next week. +4. Provide a summary analysis to support your prediction. +5. Read the execution history if any to understand the tools that have been called and the information that has been gathered. +6. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. + +**Output format:** +You should output your thought process. Finish thinking first. Output tool calls or your answer at the end. +When making tool calls, you should use the following format: +TOOL CALL: {{"tool": "tool1", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} +TOOL CALL: {{"tool": "tool2", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} + +If you can answer the question, provide the answer in the following format: +FINAL ANSWER: {{"answer": "your answer here"}} + +Follow these guidelines when formulating your answer: +1. If the question contains a false premise or assumption, answer “invalid question”. +2. If you are uncertain or do not know the answer, answer “I don't know”. +3. Give concise, factual and relevant answers. + +**IMPORTANT:** +* Divide the question into sub-questions and conquer sub-questions one by one. +* Questions may be time sensitive. Pay attention to the time when the question was asked. +* You may need to combine information from multiple tools to answer the question. +* If you did not get the answer at first, do not give up. Reflect on the steps that you have taken and try a different way. Think out of the box. You hard work will be rewarded. +* Do not make up tool outputs. + +======= Conversations with user in previous turns ======= +{thread_history} +======= End of previous conversations ======= + +======= Your execution History in this turn ========= +{history} +======= End of execution history ========== + +Now take a deep breath and think step by step to answer user's question in this turn. +USER MESSAGE: {input} +""" diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index e14262dc03..c85d99f209 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -177,19 +177,19 @@ function validate_agent_service() { exit 1 fi - # # # test worker research agent - # echo "======================Testing worker sql agent======================" - # export agent_port="9096" - # prompt="How many employees are there in the company?" - # local CONTENT=$(python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port) - # local EXIT_CODE=$(validate "$CONTENT" "8" "sql-agent-endpoint") - # echo $CONTENT - # # echo $EXIT_CODE - # local EXIT_CODE="${EXIT_CODE:0-1}" - # if [ "$EXIT_CODE" == "1" ]; then - # docker logs sql-agent-endpoint - # exit 1 - # fi + # # test worker research agent + echo "======================Testing worker research agent======================" + export agent_port="9096" + prompt="generate NVDA financial research report" + local CONTENT=$(python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port) + local EXIT_CODE=$(validate "$CONTENT" "NVDA" "research-agent-endpoint") + echo $CONTENT + echo $EXIT_CODE + local EXIT_CODE="${EXIT_CODE:0-1}" + if [ "$EXIT_CODE" == "1" ]; then + docker logs research-agent-endpoint + exit 1 + fi # test supervisor react agent echo "======================Testing supervisor agent: single turns ======================" diff --git a/FinanceAgent/tools/research_agent_tools.yaml b/FinanceAgent/tools/research_agent_tools.yaml index 4057dc0163..582330e7be 100644 --- a/FinanceAgent/tools/research_agent_tools.yaml +++ b/FinanceAgent/tools/research_agent_tools.yaml @@ -1,2 +1,47 @@ # Copyright (C) 2025 Intel Corporation # SPDX-License-Identifier: Apache-2.0 + +get_company_profile: + description: get a company's profile information. + callable_api: research_tools.py:get_company_profile + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + return_output: profile + +get_company_news: + description: retrieve market news related to designated company. + callable_api: research_tools.py:get_company_news + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + start_date: + type: str + description: start date of the search period for the company's basic financials, yyyy-mm-dd. + end_date: + type: str + description: end date of the search period for the company's basic financials, yyyy-mm-dd. + max_news_num: + type: int + description: maximum number of news to return, default to 10. + return_output: news + +get_basic_financials: + description: get latest basic financials for a designated company. + callable_api: research_tools.py:get_basic_financials + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + selected_columns: + type: list + description: List of column names of news to return, should be chosen from 'assetTurnoverTTM', 'bookValue', 'cashRatio', 'currentRatio', 'ebitPerShare', 'eps', 'ev', 'fcfMargin', 'fcfPerShareTTM', 'grossMargin', 'inventoryTurnoverTTM', 'longtermDebtTotalAsset', 'longtermDebtTotalCapital', 'longtermDebtTotalEquity', 'netDebtToTotalCapital', 'netDebtToTotalEquity', 'netMargin', 'operatingMargin', 'payoutRatioTTM', 'pb', 'peTTM', 'pfcfTTM', 'pretaxMargin', 'psTTM', 'ptbv', 'quickRatio', 'receivablesTurnoverTTM', 'roaTTM', 'roeTTM', 'roicTTM', 'rotcTTM', 'salesPerShare', 'sgaToSale', 'tangibleBookValue', 'totalDebtToEquity', 'totalDebtToTotalAsset', 'totalDebtToTotalCapital', 'totalRatio','10DayAverageTradingVolume', '13WeekPriceReturnDaily', '26WeekPriceReturnDaily', '3MonthADReturnStd', '3MonthAverageTradingVolume', '52WeekHigh', '52WeekHighDate', '52WeekLow', '52WeekLowDate', '52WeekPriceReturnDaily', '5DayPriceReturnDaily', 'assetTurnoverAnnual', 'assetTurnoverTTM', 'beta', 'bookValuePerShareAnnual', 'bookValuePerShareQuarterly', 'bookValueShareGrowth5Y', 'capexCagr5Y', 'cashFlowPerShareAnnual', 'cashFlowPerShareQuarterly', 'cashFlowPerShareTTM', 'cashPerSharePerShareAnnual', 'cashPerSharePerShareQuarterly', 'currentDividendYieldTTM', 'currentEv/freeCashFlowAnnual', 'currentEv/freeCashFlowTTM', 'currentRatioAnnual', 'currentRatioQuarterly', 'dividendGrowthRate5Y', 'dividendPerShareAnnual', 'dividendPerShareTTM', 'dividendYieldIndicatedAnnual', 'ebitdPerShareAnnual', 'ebitdPerShareTTM', 'ebitdaCagr5Y', 'ebitdaInterimCagr5Y', 'enterpriseValue', 'epsAnnual', 'epsBasicExclExtraItemsAnnual', 'epsBasicExclExtraItemsTTM', 'epsExclExtraItemsAnnual', 'epsExclExtraItemsTTM', 'epsGrowth3Y', 'epsGrowth5Y', 'epsGrowthQuarterlyYoy', 'epsGrowthTTMYoy', 'epsInclExtraItemsAnnual', 'epsInclExtraItemsTTM', 'epsNormalizedAnnual', 'epsTTM', 'focfCagr5Y', 'grossMargin5Y', 'grossMarginAnnual', 'grossMarginTTM', 'inventoryTurnoverAnnual', 'inventoryTurnoverTTM', 'longTermDebt/equityAnnual', 'longTermDebt/equityQuarterly', 'marketCapitalization', 'monthToDatePriceReturnDaily', 'netIncomeEmployeeAnnual', 'netIncomeEmployeeTTM', 'netInterestCoverageAnnual', 'netInterestCoverageTTM', 'netMarginGrowth5Y', 'netProfitMargin5Y', 'netProfitMarginAnnual', 'netProfitMarginTTM', 'operatingMargin5Y'. + return_output: basic_financials + +get_current_date: + description: get current date. + callable_api: research_tools.py:get_current_date + return_output: current_date + diff --git a/FinanceAgent/tools/research_tools.py b/FinanceAgent/tools/research_tools.py new file mode 100644 index 0000000000..f7a135b646 --- /dev/null +++ b/FinanceAgent/tools/research_tools.py @@ -0,0 +1,154 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import json +import os +import random +from collections import defaultdict +from datetime import date, datetime, timedelta +from typing import Annotated + +import pandas as pd + +finnhub_client = None + +try: + if os.environ.get("FINNHUB_API_KEY") is None: + print("Please set the environment variable FINNHUB_API_KEY to use the Finnhub API.") + else: + import finnhub + + finnhub_client = finnhub.Client(api_key=os.environ["FINNHUB_API_KEY"]) + print("Finnhub client initialized") + +except: + pass + + +def get_company_profile(symbol: Annotated[str, "ticker symbol"]) -> str: + """Get a company's profile information.""" + profile = finnhub_client.company_profile2(symbol=symbol) + if not profile: + return f"Failed to find company profile for symbol {symbol} from finnhub!" + + formatted_str = ( + "[Company Introduction]:\n\n{name} is a leading entity in the {finnhubIndustry} sector. " + "Incorporated and publicly traded since {ipo}, the company has established its reputation as " + "one of the key players in the market. As of today, {name} has a market capitalization " + "of {marketCapitalization:.2f} in {currency}, with {shareOutstanding:.2f} shares outstanding." + "\n\n{name} operates primarily in the {country}, trading under the ticker {ticker} on the {exchange}. " + "As a dominant force in the {finnhubIndustry} space, the company continues to innovate and drive " + "progress within the industry." + ).format(**profile) + + return formatted_str + + +def get_company_news( + symbol: Annotated[str, "ticker symbol"], + start_date: Annotated[ + str, + "start date of the search period for the company's basic financials, yyyy-mm-dd", + ], + end_date: Annotated[ + str, + "end date of the search period for the company's basic financials, yyyy-mm-dd", + ], + max_news_num: Annotated[int, "maximum number of news to return, default to 10"] = 10, +) -> str: + """Retrieve market news related to designated company.""" + news = finnhub_client.company_news(symbol, _from=start_date, to=end_date) + if len(news) == 0: + print(f"No company news found for symbol {symbol} from finnhub!") + news = [ + { + "date": datetime.fromtimestamp(n["datetime"]).strftime("%Y%m%d%H%M%S"), + "headline": n["headline"], + "summary": n["summary"], + } + for n in news + ] + # Randomly select a subset of news if the number of news exceeds the maximum + if len(news) > max_news_num: + news = random.choices(news, k=max_news_num) + news.sort(key=lambda x: x["date"]) + output = pd.DataFrame(news) + + return output.to_json(orient="split") + + +def get_basic_financials_history( + symbol: Annotated[str, "ticker symbol"], + freq: Annotated[ + str, + "reporting frequency of the company's basic financials: annual / quarterly", + ], + start_date: Annotated[ + str, + "start date of the search period for the company's basic financials, yyyy-mm-dd", + ], + end_date: Annotated[ + str, + "end date of the search period for the company's basic financials, yyyy-mm-dd", + ], + selected_columns: Annotated[ + list[str] | None, + "List of column names of news to return, should be chosen from 'assetTurnoverTTM', 'bookValue', 'cashRatio', 'currentRatio', 'ebitPerShare', 'eps', 'ev', 'fcfMargin', 'fcfPerShareTTM', 'grossMargin', 'inventoryTurnoverTTM', 'longtermDebtTotalAsset', 'longtermDebtTotalCapital', 'longtermDebtTotalEquity', 'netDebtToTotalCapital', 'netDebtToTotalEquity', 'netMargin', 'operatingMargin', 'payoutRatioTTM', 'pb', 'peTTM', 'pfcfTTM', 'pretaxMargin', 'psTTM', 'ptbv', 'quickRatio', 'receivablesTurnoverTTM', 'roaTTM', 'roeTTM', 'roicTTM', 'rotcTTM', 'salesPerShare', 'sgaToSale', 'tangibleBookValue', 'totalDebtToEquity', 'totalDebtToTotalAsset', 'totalDebtToTotalCapital', 'totalRatio'", + ] = None, +) -> str: + + if freq not in ["annual", "quarterly"]: + return f"Invalid reporting frequency {freq}. Please specify either 'annual' or 'quarterly'." + + basic_financials = finnhub_client.company_basic_financials(symbol, "all") + if not basic_financials["series"]: + return f"Failed to find basic financials for symbol {symbol} from finnhub! Try a different symbol." + + output_dict = defaultdict(dict) + for metric, value_list in basic_financials["series"][freq].items(): + if selected_columns and metric not in selected_columns: + continue + for value in value_list: + if value["period"] >= start_date and value["period"] <= end_date: + output_dict[metric].update({value["period"]: value["v"]}) + + financials_output = pd.DataFrame(output_dict) + financials_output = financials_output.rename_axis(index="date") + + return financials_output.to_json(orient="split") + + +def get_basic_financials( + symbol: Annotated[str, "ticker symbol"], + selected_columns: Annotated[ + list[str] | None, + "List of column names of news to return, should be chosen from 'assetTurnoverTTM', 'bookValue', 'cashRatio', 'currentRatio', 'ebitPerShare', 'eps', 'ev', 'fcfMargin', 'fcfPerShareTTM', 'grossMargin', 'inventoryTurnoverTTM', 'longtermDebtTotalAsset', 'longtermDebtTotalCapital', 'longtermDebtTotalEquity', 'netDebtToTotalCapital', 'netDebtToTotalEquity', 'netMargin', 'operatingMargin', 'payoutRatioTTM', 'pb', 'peTTM', 'pfcfTTM', 'pretaxMargin', 'psTTM', 'ptbv', 'quickRatio', 'receivablesTurnoverTTM', 'roaTTM', 'roeTTM', 'roicTTM', 'rotcTTM', 'salesPerShare', 'sgaToSale', 'tangibleBookValue', 'totalDebtToEquity', 'totalDebtToTotalAsset', 'totalDebtToTotalCapital', 'totalRatio','10DayAverageTradingVolume', '13WeekPriceReturnDaily', '26WeekPriceReturnDaily', '3MonthADReturnStd', '3MonthAverageTradingVolume', '52WeekHigh', '52WeekHighDate', '52WeekLow', '52WeekLowDate', '52WeekPriceReturnDaily', '5DayPriceReturnDaily', 'assetTurnoverAnnual', 'assetTurnoverTTM', 'beta', 'bookValuePerShareAnnual', 'bookValuePerShareQuarterly', 'bookValueShareGrowth5Y', 'capexCagr5Y', 'cashFlowPerShareAnnual', 'cashFlowPerShareQuarterly', 'cashFlowPerShareTTM', 'cashPerSharePerShareAnnual', 'cashPerSharePerShareQuarterly', 'currentDividendYieldTTM', 'currentEv/freeCashFlowAnnual', 'currentEv/freeCashFlowTTM', 'currentRatioAnnual', 'currentRatioQuarterly', 'dividendGrowthRate5Y', 'dividendPerShareAnnual', 'dividendPerShareTTM', 'dividendYieldIndicatedAnnual', 'ebitdPerShareAnnual', 'ebitdPerShareTTM', 'ebitdaCagr5Y', 'ebitdaInterimCagr5Y', 'enterpriseValue', 'epsAnnual', 'epsBasicExclExtraItemsAnnual', 'epsBasicExclExtraItemsTTM', 'epsExclExtraItemsAnnual', 'epsExclExtraItemsTTM', 'epsGrowth3Y', 'epsGrowth5Y', 'epsGrowthQuarterlyYoy', 'epsGrowthTTMYoy', 'epsInclExtraItemsAnnual', 'epsInclExtraItemsTTM', 'epsNormalizedAnnual', 'epsTTM', 'focfCagr5Y', 'grossMargin5Y', 'grossMarginAnnual', 'grossMarginTTM', 'inventoryTurnoverAnnual', 'inventoryTurnoverTTM', 'longTermDebt/equityAnnual', 'longTermDebt/equityQuarterly', 'marketCapitalization', 'monthToDatePriceReturnDaily', 'netIncomeEmployeeAnnual', 'netIncomeEmployeeTTM', 'netInterestCoverageAnnual', 'netInterestCoverageTTM', 'netMarginGrowth5Y', 'netProfitMargin5Y', 'netProfitMarginAnnual', 'netProfitMarginTTM', 'operatingMargin5Y', 'operatingMarginAnnual', 'operatingMarginTTM', 'payoutRatioAnnual', 'payoutRatioTTM', 'pbAnnual', 'pbQuarterly', 'pcfShareAnnual', 'pcfShareTTM', 'peAnnual', 'peBasicExclExtraTTM', 'peExclExtraAnnual', 'peExclExtraTTM', 'peInclExtraTTM', 'peNormalizedAnnual', 'peTTM', 'pfcfShareAnnual', 'pfcfShareTTM', 'pretaxMargin5Y', 'pretaxMarginAnnual', 'pretaxMarginTTM', 'priceRelativeToS&P50013Week', 'priceRelativeToS&P50026Week', 'priceRelativeToS&P5004Week', 'priceRelativeToS&P50052Week', 'priceRelativeToS&P500Ytd', 'psAnnual', 'psTTM', 'ptbvAnnual', 'ptbvQuarterly', 'quickRatioAnnual', 'quickRatioQuarterly', 'receivablesTurnoverAnnual', 'receivablesTurnoverTTM', 'revenueEmployeeAnnual', 'revenueEmployeeTTM', 'revenueGrowth3Y', 'revenueGrowth5Y', 'revenueGrowthQuarterlyYoy', 'revenueGrowthTTMYoy', 'revenuePerShareAnnual', 'revenuePerShareTTM', 'revenueShareGrowth5Y', 'roa5Y', 'roaRfy', 'roaTTM', 'roe5Y', 'roeRfy', 'roeTTM', 'roi5Y', 'roiAnnual', 'roiTTM', 'tangibleBookValuePerShareAnnual', 'tangibleBookValuePerShareQuarterly', 'tbvCagr5Y', 'totalDebt/totalEquityAnnual', 'totalDebt/totalEquityQuarterly', 'yearToDatePriceReturnDaily'", + ] = None, +) -> str: + """Get latest basic financials for a designated company.""" + basic_financials = finnhub_client.company_basic_financials(symbol, "all") + if not basic_financials["series"]: + return f"Failed to find basic financials for symbol {symbol} from finnhub! Try a different symbol." + + output_dict = basic_financials["metric"] + for metric, value_list in basic_financials["series"]["quarterly"].items(): + value = value_list[0] + output_dict.update({metric: value["v"]}) + + results = {} + for k in selected_columns: + if k in output_dict: + results[k] = output_dict[k] + + return json.dumps(results, indent=2) + + +def get_current_date(): + return date.today().strftime("%Y-%m-%d") + + +if __name__ == "__main__": + + print(get_company_profile("AAPL")) + # print(FinnHubUtils.get_basic_financials_history("AAPL", "annual", "2019-01-01", "2021-01-01")) + # print(FinnHubUtils.get_basic_financials("AAPL")) From 8567ec6ffaa53ee8236f936a5cc7c60ab9f5d9a5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:13:17 +0000 Subject: [PATCH 09/20] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- FinanceAgent/tools/research_agent_tools.yaml | 1 - FinanceAgent/tools/sum_agent_tools.py | 14 +++++++------- FinanceAgent/tools/utils.py | 3 +++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/FinanceAgent/tools/research_agent_tools.yaml b/FinanceAgent/tools/research_agent_tools.yaml index 582330e7be..6b79bae012 100644 --- a/FinanceAgent/tools/research_agent_tools.yaml +++ b/FinanceAgent/tools/research_agent_tools.yaml @@ -44,4 +44,3 @@ get_current_date: description: get current date. callable_api: research_tools.py:get_current_date return_output: current_date - diff --git a/FinanceAgent/tools/sum_agent_tools.py b/FinanceAgent/tools/sum_agent_tools.py index 5760650d80..9b53701e72 100644 --- a/FinanceAgent/tools/sum_agent_tools.py +++ b/FinanceAgent/tools/sum_agent_tools.py @@ -4,6 +4,7 @@ import json import requests + try: from tools.redis_kv import RedisKVStore from tools.utils import * @@ -12,7 +13,6 @@ from utils import * - def get_summary_else_doc(query, company): # search most similar doc title index_name = f"titles_{company}" @@ -59,7 +59,7 @@ def save_doc_summary(summary, doc_title, company): # doc_dict["summary"] = summary # Save the updated value back to the store - kvstore.put(f"{doc_title}_summary", {"summary":summary}, collection=f"full_doc_{company}") + kvstore.put(f"{doc_title}_summary", {"summary": summary}, collection=f"full_doc_{company}") def summarize(doc_name, company): @@ -67,10 +67,10 @@ def summarize(doc_name, company): print(f"Docsum Endpoint URL: {docsum_url}") company = format_company_name(company) - + doc_title, sum, is_summary = get_summary_else_doc(doc_name, company) if not doc_title: - return(f"Cannot find documents related to {doc_title} in KV store.") + return f"Cannot find documents related to {doc_title} in KV store." if not is_summary: data = { @@ -103,9 +103,9 @@ def summarize(doc_name, company): # year = "2024" # quarter = "Q4" - company="Costco" - year="2025" - quarter="Q2" + company = "Costco" + year = "2025" + quarter = "Q2" print("testing summarize") doc_name = f"{company} {year} {quarter} earning call" diff --git a/FinanceAgent/tools/utils.py b/FinanceAgent/tools/utils.py index 7b70289ac3..bfc25e7532 100644 --- a/FinanceAgent/tools/utils.py +++ b/FinanceAgent/tools/utils.py @@ -9,6 +9,7 @@ from langchain_huggingface import HuggingFaceEndpointEmbeddings from langchain_redis import RedisConfig, RedisVectorStore from openai import OpenAI + try: from tools.redis_kv import RedisKVStore except ImportError: @@ -49,6 +50,7 @@ Now take a deep breath and think step by step to answer the question. Wrap your final answer in {{}}. Example: {{The company has a revenue of $100 million.}} """ + def format_company_name(company): company = company.upper() @@ -61,6 +63,7 @@ def format_company_name(company): print(f"Company: {company}") return company + def get_embedder(): if TEI_EMBEDDING_ENDPOINT: # create embeddings using TEI endpoint service From ce604d14fdc77c668b5f8abd9c0e197ab0a52731 Mon Sep 17 00:00:00 2001 From: lkk12014402 Date: Mon, 7 Apr 2025 13:20:20 +0000 Subject: [PATCH 10/20] update research agent prompt and tool. --- FinanceAgent/prompts/research_prompt.py | 5 +++-- FinanceAgent/tools/research_agent_tools.yaml | 21 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/FinanceAgent/prompts/research_prompt.py b/FinanceAgent/prompts/research_prompt.py index 4d01cb264f..8d5383f44b 100644 --- a/FinanceAgent/prompts/research_prompt.py +++ b/FinanceAgent/prompts/research_prompt.py @@ -2,6 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 REACT_AGENT_LLAMA_PROMPT = """\ + You are a Market Analyst, one must possess strong analytical and problem-solving abilities, collect necessary financial information and aggregate them based on client's requirement. For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done. @@ -11,9 +12,9 @@ For a comprehensive analysis, you can use all the tools provided to retrieve information available for the company. **Procedure:** -1. Read the question carefully. To get the company news, financial histories, some related tools need `start_date` and `end_date, you can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. +1. Read the question carefully. You need get accurate `start_date` and `end_date` value first because most tools need the 2 values like company news, financials. You can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. 2. Analyze the positive developments and potential concerns of the company with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. -3. Make a rough prediction (e.g. up/down by 2-3%) of the NVDA stock price movement for next week. +3. Make a rough prediction (e.g. up/down by 2-3%) of the company stock price movement for next week. 4. Provide a summary analysis to support your prediction. 5. Read the execution history if any to understand the tools that have been called and the information that has been gathered. 6. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. diff --git a/FinanceAgent/tools/research_agent_tools.yaml b/FinanceAgent/tools/research_agent_tools.yaml index 6b79bae012..ad33995bda 100644 --- a/FinanceAgent/tools/research_agent_tools.yaml +++ b/FinanceAgent/tools/research_agent_tools.yaml @@ -28,6 +28,27 @@ get_company_news: description: maximum number of news to return, default to 10. return_output: news +get_basic_financials_history: + description: get historical basic financials for a designated company. + callable_api: research_tools.py:get_basic_financials_history + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + freq: + type: str + description: reporting frequency of the company's basic financials, such as annual, quarterly. + start_date: + type: str + description: start date of the search period for the company's basic financials, yyyy-mm-dd. + end_date: + type: str + description: end date of the search period for the company's basic financials, yyyy-mm-dd. + selected_columns: + type: list + description: List of column names of news to return, should be chosen from 'assetTurnoverTTM', 'bookValue', 'cashRatio', 'currentRatio', 'ebitPerShare', 'eps', 'ev', 'fcfMargin', 'fcfPerShareTTM', 'grossMargin', 'inventoryTurnoverTTM', 'longtermDebtTotalAsset', 'longtermDebtTotalCapital', 'longtermDebtTotalEquity', 'netDebtToTotalCapital', 'netDebtToTotalEquity', 'netMargin', 'operatingMargin', 'payoutRatioTTM', 'pb', 'peTTM', 'pfcfTTM', 'pretaxMargin', 'psTTM', 'ptbv', 'quickRatio', 'receivablesTurnoverTTM', 'roaTTM', 'roeTTM', 'roicTTM', 'rotcTTM', 'salesPerShare', 'sgaToSale', 'tangibleBookValue', 'totalDebtToEquity', 'totalDebtToTotalAsset', 'totalDebtToTotalCapital', 'totalRatio','10DayAverageTradingVolume', '13WeekPriceReturnDaily', '26WeekPriceReturnDaily', '3MonthADReturnStd', '3MonthAverageTradingVolume', '52WeekHigh', '52WeekHighDate', '52WeekLow', '52WeekLowDate', '52WeekPriceReturnDaily', '5DayPriceReturnDaily', 'assetTurnoverAnnual', 'assetTurnoverTTM', 'beta', 'bookValuePerShareAnnual', 'bookValuePerShareQuarterly', 'bookValueShareGrowth5Y', 'capexCagr5Y', 'cashFlowPerShareAnnual', 'cashFlowPerShareQuarterly', 'cashFlowPerShareTTM', 'cashPerSharePerShareAnnual', 'cashPerSharePerShareQuarterly', 'currentDividendYieldTTM', 'currentEv/freeCashFlowAnnual', 'currentEv/freeCashFlowTTM', 'currentRatioAnnual', 'currentRatioQuarterly', 'dividendGrowthRate5Y', 'dividendPerShareAnnual', 'dividendPerShareTTM', 'dividendYieldIndicatedAnnual', 'ebitdPerShareAnnual', 'ebitdPerShareTTM', 'ebitdaCagr5Y', 'ebitdaInterimCagr5Y', 'enterpriseValue', 'epsAnnual', 'epsBasicExclExtraItemsAnnual', 'epsBasicExclExtraItemsTTM', 'epsExclExtraItemsAnnual', 'epsExclExtraItemsTTM', 'epsGrowth3Y', 'epsGrowth5Y', 'epsGrowthQuarterlyYoy', 'epsGrowthTTMYoy', 'epsInclExtraItemsAnnual', 'epsInclExtraItemsTTM', 'epsNormalizedAnnual', 'epsTTM', 'focfCagr5Y', 'grossMargin5Y', 'grossMarginAnnual', 'grossMarginTTM', 'inventoryTurnoverAnnual', 'inventoryTurnoverTTM', 'longTermDebt/equityAnnual', 'longTermDebt/equityQuarterly', 'marketCapitalization', 'monthToDatePriceReturnDaily', 'netIncomeEmployeeAnnual', 'netIncomeEmployeeTTM', 'netInterestCoverageAnnual', 'netInterestCoverageTTM', 'netMarginGrowth5Y', 'netProfitMargin5Y', 'netProfitMarginAnnual', 'netProfitMarginTTM', 'operatingMargin5Y'. + return_output: history_financials + get_basic_financials: description: get latest basic financials for a designated company. callable_api: research_tools.py:get_basic_financials From 4a905517b7a03ad5740e9793a1cdf0d06cc1a75d Mon Sep 17 00:00:00 2001 From: lkk12014402 Date: Wed, 9 Apr 2025 14:11:55 +0000 Subject: [PATCH 11/20] update research agent tools and prompt. --- FinanceAgent/prompts/research_prompt.py | 54 ++- FinanceAgent/tools/research_agent_tools.yaml | 57 ++++ FinanceAgent/tools/research_tools.py | 325 ++++++++++++++++++- 3 files changed, 418 insertions(+), 18 deletions(-) diff --git a/FinanceAgent/prompts/research_prompt.py b/FinanceAgent/prompts/research_prompt.py index 8d5383f44b..34c0985d72 100644 --- a/FinanceAgent/prompts/research_prompt.py +++ b/FinanceAgent/prompts/research_prompt.py @@ -3,21 +3,52 @@ REACT_AGENT_LLAMA_PROMPT = """\ -You are a Market Analyst, one must possess strong analytical and problem-solving abilities, collect necessary financial information and aggregate them based on client's requirement. For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done. +Role: Expert Investor +Department: Finance +Primary Responsibility: Generation of Customized Financial Analysis Reports + +Role Description: +As an Expert Investor within the finance domain, your expertise is harnessed to develop bespoke Financial Analysis Reports that cater to specific client requirements. This role demands a deep dive into financial statements and market data to unearth insights regarding a company's financial performance and stability. Engaging directly with clients to gather essential information and continuously refining the report with their feedback ensures the final product precisely meets their needs and expectations. + +Key Objectives: + +Analytical Precision: Employ meticulous analytical prowess to interpret financial data, identifying underlying trends and anomalies. +Effective Communication: Simplify and effectively convey complex financial narratives, making them accessible and actionable to non-specialist audiences. +Client Focus: Dynamically tailor reports in response to client feedback, ensuring the final analysis aligns with their strategic objectives. +Adherence to Excellence: Maintain the highest standards of quality and integrity in report generation, following established benchmarks for analytical rigor. +Performance Indicators: The efficacy of the Financial Analysis Report is measured by its utility in providing clear, actionable insights. This encompasses aiding corporate decision-making, pinpointing areas for operational enhancement, and offering a lucid evaluation of the company's financial health. Success is ultimately reflected in the report's contribution to informed investment decisions and strategic planning. + +Reply TERMINATE when everything is settled. You have access to the following tools: {tools} -For a comprehensive analysis, you can use all the tools provided to retrieve information available for the company. +For writing a comprehensive analysis financial research report, you can use all the tools provided to retrieve information available for the company. -**Procedure:** -1. Read the question carefully. You need get accurate `start_date` and `end_date` value first because most tools need the 2 values like company news, financials. You can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. -2. Analyze the positive developments and potential concerns of the company with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. -3. Make a rough prediction (e.g. up/down by 2-3%) of the company stock price movement for next week. -4. Provide a summary analysis to support your prediction. -5. Read the execution history if any to understand the tools that have been called and the information that has been gathered. -6. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. +**Procedures:** +1. Explicitly explain your working plan before you kick off. +2. Read the question carefully. Firstly You need get accurate `start_date` and `end_date` value, because most tools need the 2 values like company news, financials. You can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. +3. Analyze Key Financial Statements: + - **Balance Sheet Analysis**: Use the `analyze_balance_sheet` tool to obtain insights into the company's financial stability and liquidity. + - **Income Statement Analysis**: Employ the `analyze_income_stmt` tool to assess the company's profitability over the fiscal year. + - **Cash Flow Statement Analysis**: Apply the `analyze_cash_flow` tool to evaluate the cash inflows and outflows, providing a clear view of the company's operational efficiency. +4. Perform Additional Analyses: + - **Business Highlights**: Use the `get_company_news` tool to summarize the company's operational achievements and strategic milestones over the year. + - **Company Description**: Utilize the `get_company_profile` tool to provide a detailed overview of the company's business model, industry positioning, and strategic initiatives. + - **Risk Assessment**: Employ all the tool output financial information to identify and summarize the top three risks facing the company. +5. Share Performance: analysis the stock performance using the `get_share_performance` tool. +6. Generate Report: Finally, compile all the analyzed data, insights, and visuals into a comprehensive financial report, which contains the following paragraphs: + - income summarization + - market position + - business overview + - risk assessment + - competitors analysis + - share performance analysis +7. All the paragraphs should combine between 400 and 450 words. +8. Read the execution history if any to understand the tools that have been called and the information that has been gathered. +9. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. +10. Do not repeat your thinking process!!! Only gather all information when you generate report. **Output format:** You should output your thought process. Finish thinking first. Output tool calls or your answer at the end. @@ -25,8 +56,8 @@ TOOL CALL: {{"tool": "tool1", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} TOOL CALL: {{"tool": "tool2", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} -If you can answer the question, provide the answer in the following format: -FINAL ANSWER: {{"answer": "your answer here"}} +If you can generate the financial, provide the report in the following format: +FINAL ANSWER: {{"answer": "your financial research report here"}} Follow these guidelines when formulating your answer: 1. If the question contains a false premise or assumption, answer “invalid question”. @@ -34,6 +65,7 @@ 3. Give concise, factual and relevant answers. **IMPORTANT:** +* Do not generate history messages repeatly. * Divide the question into sub-questions and conquer sub-questions one by one. * Questions may be time sensitive. Pay attention to the time when the question was asked. * You may need to combine information from multiple tools to answer the question. diff --git a/FinanceAgent/tools/research_agent_tools.yaml b/FinanceAgent/tools/research_agent_tools.yaml index ad33995bda..bcf4e2bac2 100644 --- a/FinanceAgent/tools/research_agent_tools.yaml +++ b/FinanceAgent/tools/research_agent_tools.yaml @@ -65,3 +65,60 @@ get_current_date: description: get current date. callable_api: research_tools.py:get_current_date return_output: current_date + +analyze_balance_sheet: + description: gets balance sheets for a given ticker over a given period. + callable_api: research_tools.py:analyze_balance_sheet + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + period: + type: str + description: The period of the balance sheets, possible values such as annual, quarterly, ttm. Default is 'annual'. + limit: + type: int + description: The number of balance sheets to return. Default is 10. + return_output: balance_sheet + +analyze_income_stmt: + description: gets income statements for a given ticker over a given period. + callable_api: research_tools.py:analyze_income_stmt + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + period: + type: str + description: The period of the balance sheets, possible values, such as annual, quarterly, ttm. Default is 'annual'. + limit: + type: int + description: The number of balance sheets to return. Default is 10. + return_output: income_stmt + +analyze_cash_flow: + description: gets cash flow statements for a given ticker over a given period. + callable_api: research_tools.py:analyze_cash_flow + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + period: + type: str + description: The period of the balance sheets, possible values, such as annual, quarterly, ttm. Default is 'annual'. + limit: + type: int + description: The number of balance sheets to return. Default is 10. + return_output: cash_flow + +get_share_performance: + description: gets stock prices for a given ticker over 60 days. + callable_api: research_tools.py:get_share_performance + args_schema: + symbol: + type: str + description: the company name or ticker symbol. + end_date: + type: str + description: end date of the search period for the company's basic financials, yyyy-mm-dd. + return_output: stock_price diff --git a/FinanceAgent/tools/research_tools.py b/FinanceAgent/tools/research_tools.py index f7a135b646..4293330458 100644 --- a/FinanceAgent/tools/research_tools.py +++ b/FinanceAgent/tools/research_tools.py @@ -1,4 +1,4 @@ -# Copyright (C) 2025 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import json @@ -6,7 +6,8 @@ import random from collections import defaultdict from datetime import date, datetime, timedelta -from typing import Annotated +from typing import Annotated, Any, List, Optional +from textwrap import dedent import pandas as pd @@ -25,6 +26,164 @@ pass +# https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/utilities/financial_datasets.py +""" +Util that calls several of financial datasets stock market REST APIs. +Docs: https://docs.financialdatasets.ai/ +""" + +import requests +from pydantic import BaseModel + + +FINANCIAL_DATASETS_BASE_URL = "https://api.financialdatasets.ai/" + +class FinancialDatasetsAPIWrapper(BaseModel): + """Wrapper for financial datasets API.""" + + financial_datasets_api_key: Optional[str] = None + + def __init__(self, **data: Any): + super().__init__(**data) + self.financial_datasets_api_key = data["api_key"] + + @property + def _api_key(self) -> str: + if self.financial_datasets_api_key is None: + raise ValueError( + "API key is required for the FinancialDatasetsAPIWrapper. " + "Please provide the API key by either:\n" + "1. Manually specifying it when initializing the wrapper: " + "FinancialDatasetsAPIWrapper(financial_datasets_api_key='your_api_key')\n" + "2. Setting it as an environment variable: FINANCIAL_DATASETS_API_KEY" + ) + return self.financial_datasets_api_key + + def get_income_statements( + self, + ticker: str, + period: str, + limit: Optional[int], + ) -> Optional[dict]: + """ + Get the income statements for a stock `ticker` over a `period` of time. + + :param ticker: the stock ticker + :param period: the period of time to get the balance sheets for. + Possible values are: annual, quarterly, ttm. + :param limit: the number of results to return, default is 10 + :return: a list of income statements + """ + url = ( + f"{FINANCIAL_DATASETS_BASE_URL}financials/income-statements/" + f"?ticker={ticker}" + f"&period={period}" + f"&limit={limit if limit else 10}" + ) + + # Add the api key to the headers + headers = {"X-API-KEY": self._api_key} + + # Execute the request + response = requests.get(url, headers=headers) + data = response.json() + + return data.get("income_statements", None) + + def get_balance_sheets( + self, + ticker: str, + period: str, + limit: Optional[int], + ) -> List[dict]: + """ + Get the balance sheets for a stock `ticker` over a `period` of time. + + :param ticker: the stock ticker + :param period: the period of time to get the balance sheets for. + Possible values are: annual, quarterly, ttm. + :param limit: the number of results to return, default is 10 + :return: a list of balance sheets + """ + url = ( + f"{FINANCIAL_DATASETS_BASE_URL}financials/balance-sheets/" + f"?ticker={ticker}" + f"&period={period}" + f"&limit={limit if limit else 10}" + ) + + # Add the api key to the headers + headers = {"X-API-KEY": self._api_key} + + # Execute the request + response = requests.get(url, headers=headers) + data = response.json() + + return data.get("balance_sheets", None) + + def get_cash_flow_statements( + self, + ticker: str, + period: str, + limit: Optional[int], + ) -> List[dict]: + """ + Get the cash flow statements for a stock `ticker` over a `period` of time. + + :param ticker: the stock ticker + :param period: the period of time to get the balance sheets for. + Possible values are: annual, quarterly, ttm. + :param limit: the number of results to return, default is 10 + :return: a list of cash flow statements + """ + + url = ( + f"{FINANCIAL_DATASETS_BASE_URL}financials/cash-flow-statements/" + f"?ticker={ticker}" + f"&period={period}" + f"&limit={limit if limit else 10}" + ) + + # Add the api key to the headers + headers = {"X-API-KEY": self._api_key} + + # Execute the request + response = requests.get(url, headers=headers) + data = response.json() + + return data.get("cash_flow_statements", None) + + def run(self, mode: str, ticker: str, **kwargs: Any) -> str: + if mode == "get_income_statements": + period = kwargs.get("period", "annual") + limit = kwargs.get("limit", 10) + return json.dumps(self.get_income_statements(ticker, period, limit)) + elif mode == "get_balance_sheets": + period = kwargs.get("period", "annual") + limit = kwargs.get("limit", 10) + return json.dumps(self.get_balance_sheets(ticker, period, limit)) + elif mode == "get_cash_flow_statements": + period = kwargs.get("period", "annual") + limit = kwargs.get("limit", 10) + return json.dumps(self.get_cash_flow_statements(ticker, period, limit)) + else: + raise ValueError(f"Invalid mode {mode} for financial datasets API.") + + +financial_datasets_client = None + +try: + if os.environ.get("FINANCIAL_DATASETS_API_KEY") is None: + print("Please set the environment variable FINANCIAL_DATASETS_API_KEY to use the financialdatasets.ai data.") + else: + financial_datasets_client = FinancialDatasetsAPIWrapper(api_key=os.environ["FINANCIAL_DATASETS_API_KEY"]) + print("FINANCIAL DATASETS client initialized") + +except Exception as e: + print(str(e)) + + + def get_company_profile(symbol: Annotated[str, "ticker symbol"]) -> str: """Get a company's profile information.""" profile = finnhub_client.company_profile2(symbol=symbol) @@ -55,7 +214,7 @@ def get_company_news( "end date of the search period for the company's basic financials, yyyy-mm-dd", ], max_news_num: Annotated[int, "maximum number of news to return, default to 10"] = 10, -) -> str: +): """Retrieve market news related to designated company.""" news = finnhub_client.company_news(symbol, _from=start_date, to=end_date) if len(news) == 0: @@ -147,8 +306,160 @@ def get_current_date(): return date.today().strftime("%Y-%m-%d") -if __name__ == "__main__": +def combine_prompt(instruction, resource): + prompt = f"Resource: {resource}\n\nInstruction: {instruction}" + return prompt + +def analyze_balance_sheet( + symbol: Annotated[str, "ticker symbol"], + period: Annotated[str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm."], + limit: int = 10 +) -> str: + """ + Retrieve the balance sheet for the given ticker symbol with the related section of its 10-K report. + Then return with an instruction on how to analyze the balance sheet. + """ + + balance_sheet = financial_datasets_client.run( + mode="get_balance_sheets", + ticker=symbol, + period=period, + limit=limit, + ) + + df_string = "Balance sheet:\n" + balance_sheet + + instruction = dedent( + """ + Delve into a detailed scrutiny of the company's balance sheet for the most recent fiscal year, pinpointing + the structure of assets, liabilities, and shareholders' equity to decode the firm's financial stability and + operational efficiency. Focus on evaluating the liquidity through current assets versus current liabilities, + the solvency via long-term debt ratios, and the equity position to gauge long-term investment potential. + Contrast these metrics with previous years' data to highlight financial trends, improvements, or deteriorations. + Finalize with a strategic assessment of the company's financial leverage, asset management, and capital structure, + providing insights into its fiscal health and future prospects in a single paragraph. Less than 130 words. + """ + ) + + prompt = combine_prompt(instruction, df_string) + return prompt + + +def analyze_income_stmt( + symbol: Annotated[str, "ticker symbol"], + period: Annotated[str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm."], + limit: int = 10 +) -> str: + """ + Retrieve the income statement for the given ticker symbol with the related section of its 10-K report. + Then return with an instruction on how to analyze the income statement. + """ + # Retrieve the income statement + income_stmt = financial_datasets_client.run( + mode="get_income_statements", + ticker=symbol, + period=period, + limit=limit, + ) + df_string = "Income statement:\n" + income_stmt + + # Analysis instruction + instruction = dedent( + """ + Conduct a comprehensive analysis of the company's income statement for the current fiscal year. + Start with an overall revenue record, including Year-over-Year or Quarter-over-Quarter comparisons, + and break down revenue sources to identify primary contributors and trends. Examine the Cost of + Goods Sold for potential cost control issues. Review profit margins such as gross, operating, + and net profit margins to evaluate cost efficiency, operational effectiveness, and overall profitability. + Analyze Earnings Per Share to understand investor perspectives. Compare these metrics with historical + data and industry or competitor benchmarks to identify growth patterns, profitability trends, and + operational challenges. The output should be a strategic overview of the company’s financial health + in a single paragraph, less than 130 words, summarizing the previous analysis into 4-5 key points under + respective subheadings with specific discussion and strong data support. + """ + ) + + + # Combine the instruction, section text, and income statement + prompt = combine_prompt(instruction, df_string) + + return prompt + +def analyze_cash_flow( + symbol: Annotated[str, "ticker symbol"], + period: Annotated[str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm."], + limit: int = 10 +) -> str: + """ + Retrieve the cash flow statement for the given ticker symbol with the related section of its 10-K report. + Then return with an instruction on how to analyze the cash flow statement. + """ + + cash_flow = financial_datasets_client.run( + mode="get_cash_flow_statements", + ticker=symbol, + period=period, + limit=limit, + ) + + df_string = "Cash flow statement:\n" + cash_flow + + instruction = dedent( + """ + Dive into a comprehensive evaluation of the company's cash flow for the latest fiscal year, focusing on cash inflows + and outflows across operating, investing, and financing activities. Examine the operational cash flow to assess the + core business profitability, scrutinize investing activities for insights into capital expenditures and investments, + and review financing activities to understand debt, equity movements, and dividend policies. Compare these cash movements + to prior periods to discern trends, sustainability, and liquidity risks. Conclude with an informed analysis of the company's + cash management effectiveness, liquidity position, and potential for future growth or financial challenges in a single paragraph. + Less than 130 words. + """ + ) + + prompt = combine_prompt(instruction, df_string) + return prompt + +def get_share_performance( + symbol: Annotated[str, "Ticker symbol of the stock (e.g., 'AAPL' for Apple)"], + end_date: Annotated[ + str, + "end date of the search period for the company's basic financials, yyyy-mm-dd", + ], + ) -> str: + """Plot the stock performance of a company compared to the S&P 500 over the past year.""" + filing_date = datetime.strptime(end_date, "%Y-%m-%d") + + start = (filing_date - timedelta(days=60)).strftime("%Y-%m-%d") + end = filing_date.strftime("%Y-%m-%d") + interval = 'day' # possible values are {'second', 'minute', 'day', 'week', 'month', 'year'} + interval_multiplier = 1 # every 1 day + + # create the URL + url = ( + f'https://api.financialdatasets.ai/prices/' + f'?ticker={symbol}' + f'&interval={interval}' + f'&interval_multiplier={interval_multiplier}' + f'&start_date={start}' + f'&end_date={end}' + ) + + headers = {"X-API-KEY": "your_api_key_here"} + + response = requests.get(url, headers=headers) + # parse prices from the response + + prices = response.json().get('prices') + + df_string = "Past 60 days Stock prices:\n" + json.dumps(prices) + + instruction = dedent( + """ + Dive into a comprehensive evaluation of the company's stock price for the latest 60 days. + Less than 130 words. + """ + ) + + prompt = combine_prompt(instruction, df_string) + return prompt - print(get_company_profile("AAPL")) - # print(FinnHubUtils.get_basic_financials_history("AAPL", "annual", "2019-01-01", "2021-01-01")) - # print(FinnHubUtils.get_basic_financials("AAPL")) From dfbd7a7af79c9e92d47aebd1b40636584de43e80 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 14:07:35 +0000 Subject: [PATCH 12/20] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- FinanceAgent/prompts/research_prompt.py | 2 +- FinanceAgent/tools/research_tools.py | 85 +++++++++++++------------ 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/FinanceAgent/prompts/research_prompt.py b/FinanceAgent/prompts/research_prompt.py index 34c0985d72..2ad0ee41d5 100644 --- a/FinanceAgent/prompts/research_prompt.py +++ b/FinanceAgent/prompts/research_prompt.py @@ -65,7 +65,7 @@ 3. Give concise, factual and relevant answers. **IMPORTANT:** -* Do not generate history messages repeatly. +* Do not generate history messages repeatedly. * Divide the question into sub-questions and conquer sub-questions one by one. * Questions may be time sensitive. Pay attention to the time when the question was asked. * You may need to combine information from multiple tools to answer the question. diff --git a/FinanceAgent/tools/research_tools.py b/FinanceAgent/tools/research_tools.py index 4293330458..f54527a3ee 100644 --- a/FinanceAgent/tools/research_tools.py +++ b/FinanceAgent/tools/research_tools.py @@ -6,8 +6,8 @@ import random from collections import defaultdict from datetime import date, datetime, timedelta -from typing import Annotated, Any, List, Optional from textwrap import dedent +from typing import Annotated, Any, List, Optional import pandas as pd @@ -35,9 +35,9 @@ import requests from pydantic import BaseModel - FINANCIAL_DATASETS_BASE_URL = "https://api.financialdatasets.ai/" + class FinancialDatasetsAPIWrapper(BaseModel): """Wrapper for financial datasets API.""" @@ -65,8 +65,7 @@ def get_income_statements( period: str, limit: Optional[int], ) -> Optional[dict]: - """ - Get the income statements for a stock `ticker` over a `period` of time. + """Get the income statements for a stock `ticker` over a `period` of time. :param ticker: the stock ticker :param period: the period of time to get the balance sheets for. @@ -96,8 +95,7 @@ def get_balance_sheets( period: str, limit: Optional[int], ) -> List[dict]: - """ - Get the balance sheets for a stock `ticker` over a `period` of time. + """Get the balance sheets for a stock `ticker` over a `period` of time. :param ticker: the stock ticker :param period: the period of time to get the balance sheets for. @@ -127,8 +125,7 @@ def get_cash_flow_statements( period: str, limit: Optional[int], ) -> List[dict]: - """ - Get the cash flow statements for a stock `ticker` over a `period` of time. + """Get the cash flow statements for a stock `ticker` over a `period` of time. :param ticker: the stock ticker :param period: the period of time to get the balance sheets for. @@ -183,7 +180,6 @@ def run(self, mode: str, ticker: str, **kwargs: Any) -> str: print(str(e)) - def get_company_profile(symbol: Annotated[str, "ticker symbol"]) -> str: """Get a company's profile information.""" profile = finnhub_client.company_profile2(symbol=symbol) @@ -310,21 +306,24 @@ def combine_prompt(instruction, resource): prompt = f"Resource: {resource}\n\nInstruction: {instruction}" return prompt + def analyze_balance_sheet( symbol: Annotated[str, "ticker symbol"], - period: Annotated[str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm."], - limit: int = 10 + period: Annotated[ + str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm." + ], + limit: int = 10, ) -> str: - """ - Retrieve the balance sheet for the given ticker symbol with the related section of its 10-K report. + """Retrieve the balance sheet for the given ticker symbol with the related section of its 10-K report. + Then return with an instruction on how to analyze the balance sheet. """ balance_sheet = financial_datasets_client.run( - mode="get_balance_sheets", - ticker=symbol, - period=period, - limit=limit, + mode="get_balance_sheets", + ticker=symbol, + period=period, + limit=limit, ) df_string = "Balance sheet:\n" + balance_sheet @@ -347,19 +346,21 @@ def analyze_balance_sheet( def analyze_income_stmt( symbol: Annotated[str, "ticker symbol"], - period: Annotated[str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm."], - limit: int = 10 + period: Annotated[ + str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm." + ], + limit: int = 10, ) -> str: - """ - Retrieve the income statement for the given ticker symbol with the related section of its 10-K report. + """Retrieve the income statement for the given ticker symbol with the related section of its 10-K report. + Then return with an instruction on how to analyze the income statement. """ # Retrieve the income statement income_stmt = financial_datasets_client.run( - mode="get_income_statements", - ticker=symbol, - period=period, - limit=limit, + mode="get_income_statements", + ticker=symbol, + period=period, + limit=limit, ) df_string = "Income statement:\n" + income_stmt @@ -379,19 +380,21 @@ def analyze_income_stmt( """ ) - # Combine the instruction, section text, and income statement prompt = combine_prompt(instruction, df_string) return prompt + def analyze_cash_flow( symbol: Annotated[str, "ticker symbol"], - period: Annotated[str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm."], - limit: int = 10 + period: Annotated[ + str, "the period of time to get the balance sheets for. Possible values are: annual, quarterly, ttm." + ], + limit: int = 10, ) -> str: - """ - Retrieve the cash flow statement for the given ticker symbol with the related section of its 10-K report. + """Retrieve the cash flow statement for the given ticker symbol with the related section of its 10-K report. + Then return with an instruction on how to analyze the cash flow statement. """ @@ -419,29 +422,30 @@ def analyze_cash_flow( prompt = combine_prompt(instruction, df_string) return prompt + def get_share_performance( symbol: Annotated[str, "Ticker symbol of the stock (e.g., 'AAPL' for Apple)"], end_date: Annotated[ str, "end date of the search period for the company's basic financials, yyyy-mm-dd", ], - ) -> str: +) -> str: """Plot the stock performance of a company compared to the S&P 500 over the past year.""" filing_date = datetime.strptime(end_date, "%Y-%m-%d") start = (filing_date - timedelta(days=60)).strftime("%Y-%m-%d") end = filing_date.strftime("%Y-%m-%d") - interval = 'day' # possible values are {'second', 'minute', 'day', 'week', 'month', 'year'} - interval_multiplier = 1 # every 1 day + interval = "day" # possible values are {'second', 'minute', 'day', 'week', 'month', 'year'} + interval_multiplier = 1 # every 1 day # create the URL url = ( - f'https://api.financialdatasets.ai/prices/' - f'?ticker={symbol}' - f'&interval={interval}' - f'&interval_multiplier={interval_multiplier}' - f'&start_date={start}' - f'&end_date={end}' + f"https://api.financialdatasets.ai/prices/" + f"?ticker={symbol}" + f"&interval={interval}" + f"&interval_multiplier={interval_multiplier}" + f"&start_date={start}" + f"&end_date={end}" ) headers = {"X-API-KEY": "your_api_key_here"} @@ -449,7 +453,7 @@ def get_share_performance( response = requests.get(url, headers=headers) # parse prices from the response - prices = response.json().get('prices') + prices = response.json().get("prices") df_string = "Past 60 days Stock prices:\n" + json.dumps(prices) @@ -462,4 +466,3 @@ def get_share_performance( prompt = combine_prompt(instruction, df_string) return prompt - From 0363ad819b6b5332c51281a4af2ef53df2177149 Mon Sep 17 00:00:00 2001 From: lkk12014402 Date: Thu, 10 Apr 2025 12:19:25 +0000 Subject: [PATCH 13/20] update ut. --- .../intel/hpu/gaudi/compose.yaml | 1 + .../intel/hpu/gaudi/launch_agents.sh | 3 +- FinanceAgent/prompts/research_prompt.py | 35 +++++----------- FinanceAgent/tests/test.py | 6 ++- FinanceAgent/tests/test_compose_on_gaudi.sh | 40 ++++++++++--------- 5 files changed, 39 insertions(+), 46 deletions(-) diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index f5b2937af0..5748ec8f81 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -60,6 +60,7 @@ services: http_proxy: ${http_proxy} https_proxy: ${https_proxy} FINNHUB_API_KEY: ${FINNHUB_API_KEY} + FINANCIAL_DATASETS_API_KEY: ${FINANCIAL_DATASETS_API_KEY} port: 9096 supervisor-react-agent: diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh index 9a97cfd631..55dcbb7d3d 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_agents.sh @@ -30,6 +30,7 @@ export MAX_TOTAL_TOKENS=4096 export DocSum_COMPONENT_NAME="OpeaDocSumvLLM" export DOCSUM_ENDPOINT="http://${ip_address}:9000/v1/docsum" - +export FINNHUB_API_KEY=${FINNHUB_API_KEY} +export FINANCIAL_DATASETS_API_KEY=${FINANCIAL_DATASETS_API_KEY} docker compose -f compose.yaml up -d diff --git a/FinanceAgent/prompts/research_prompt.py b/FinanceAgent/prompts/research_prompt.py index 2ad0ee41d5..c78ab34250 100644 --- a/FinanceAgent/prompts/research_prompt.py +++ b/FinanceAgent/prompts/research_prompt.py @@ -26,38 +26,23 @@ For writing a comprehensive analysis financial research report, you can use all the tools provided to retrieve information available for the company. -**Procedures:** +**Pay attention to the followings:** 1. Explicitly explain your working plan before you kick off. 2. Read the question carefully. Firstly You need get accurate `start_date` and `end_date` value, because most tools need the 2 values like company news, financials. You can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. -3. Analyze Key Financial Statements: - - **Balance Sheet Analysis**: Use the `analyze_balance_sheet` tool to obtain insights into the company's financial stability and liquidity. - - **Income Statement Analysis**: Employ the `analyze_income_stmt` tool to assess the company's profitability over the fiscal year. - - **Cash Flow Statement Analysis**: Apply the `analyze_cash_flow` tool to evaluate the cash inflows and outflows, providing a clear view of the company's operational efficiency. -4. Perform Additional Analyses: - - **Business Highlights**: Use the `get_company_news` tool to summarize the company's operational achievements and strategic milestones over the year. - - **Company Description**: Utilize the `get_company_profile` tool to provide a detailed overview of the company's business model, industry positioning, and strategic initiatives. - - **Risk Assessment**: Employ all the tool output financial information to identify and summarize the top three risks facing the company. -5. Share Performance: analysis the stock performance using the `get_share_performance` tool. -6. Generate Report: Finally, compile all the analyzed data, insights, and visuals into a comprehensive financial report, which contains the following paragraphs: - - income summarization - - market position - - business overview - - risk assessment - - competitors analysis - - share performance analysis -7. All the paragraphs should combine between 400 and 450 words. -8. Read the execution history if any to understand the tools that have been called and the information that has been gathered. -9. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. -10. Do not repeat your thinking process!!! Only gather all information when you generate report. +3. Use tools one by one for clarity, especially when asking for instructions. +4. Provide stock performace, because the financial report is used for stock investment analysis. +5. Read the execution history if any to understand the tools that have been called and the information that has been gathered. +6. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. **Output format:** -You should output your thought process. Finish thinking first. Output tool calls or your answer at the end. -When making tool calls, you should use the following format: +You should output your thought process: + +When need tool calls, you should use the following format: TOOL CALL: {{"tool": "tool1", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} TOOL CALL: {{"tool": "tool2", "args": {{"arg1": "value1", "arg2": "value2", ...}}}} -If you can generate the financial, provide the report in the following format: -FINAL ANSWER: {{"answer": "your financial research report here"}} +If you have enough financial data, provide the financial report in the following format: +FINAL ANSWER: {{"answer": "compile all the analyzed data and insights into a comprehensive financial report, which contains the following paragraphs: income summarization, market position, business overview, risk assessment, competitors analysis, share performance analysis."}} Follow these guidelines when formulating your answer: 1. If the question contains a false premise or assumption, answer “invalid question”. diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py index e8fed1c85f..151a8a27b7 100644 --- a/FinanceAgent/tests/test.py +++ b/FinanceAgent/tests/test.py @@ -29,7 +29,10 @@ def process_request(url, query, is_stream=False): def test_worker_agent(args): url = f"http://{args.ip_addr}:{args.ext_port}/v1/chat/completions" - query = {"role": "user", "messages": args.prompt, "stream": "false"} + if args.tool_choice is None: + query = {"role": "user", "messages": args.prompt, "stream": "false"} + else: + query = {"role": "user", "messages": args.prompt, "stream": "false", "tool_choice": args.tool_choice} ret = process_request(url, query) print("Response: ", ret) @@ -79,6 +82,7 @@ def test_supervisor_agent_single_turn(args): parser.add_argument("--prompt", type=str, help="prompt message") parser.add_argument("--agent_role", type=str, default="supervisor", help="supervisor or worker") parser.add_argument("--multi-turn", action="store_true", help="multi-turn conversation") + parser.add_argument('--tool_choice', nargs='+', help='limit tools') args, _ = parser.parse_known_args() print(args) diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index c85d99f209..cbb97894c0 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -59,7 +59,8 @@ function build_vllm_docker_image() { git clone https://github.com/HabanaAI/vllm-fork.git fi cd ./vllm-fork - VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") + # VLLM_VER=$(git describe --tags "$(git rev-list --tags --max-count=1)") + VLLM_VER=v0.6.6.post1+Gaudi-1.20.0 git checkout ${VLLM_VER} &> /dev/null docker build --no-cache -f Dockerfile.hpu -t $vllm_image --shm-size=128g . --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy if [ $? -ne 0 ]; then @@ -75,11 +76,11 @@ function start_vllm_service_70B() { echo "token is ${HF_TOKEN}" echo "start vllm gaudi service" echo "**************model is $model**************" - docker run -d --runtime=habana --rm --name "vllm-gaudi-server" -e HABANA_VISIBLE_DEVICES=0,1,2,3 -p $vllm_port:8000 -v $vllm_volume:/data -e HF_TOKEN=$HF_TOKEN -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN -e HF_HOME=/data -e OMPI_MCA_btl_vader_single_copy_mechanism=none -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e http_proxy=$http_proxy -e https_proxy=$https_proxy -e no_proxy=$no_proxy -e VLLM_SKIP_WARMUP=true --cap-add=sys_nice --ipc=host $vllm_image --model ${model} --max-seq-len-to-capture 16384 --tensor-parallel-size 4 - sleep 5s + docker run -d --runtime=habana --rm --name "vllm-gaudi-server" -e HABANA_VISIBLE_DEVICES=all -p $vllm_port:8000 -v $vllm_volume:/data -e HF_TOKEN=$HF_TOKEN -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN -e HF_HOME=/data -e OMPI_MCA_btl_vader_single_copy_mechanism=none -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e http_proxy=$http_proxy -e https_proxy=$https_proxy -e no_proxy=$no_proxy -e VLLM_SKIP_WARMUP=true --cap-add=sys_nice --ipc=host $vllm_image --model ${model} --max-seq-len-to-capture 16384 --tensor-parallel-size 4 + sleep 10s echo "Waiting vllm gaudi ready" n=0 - until [[ "$n" -ge 100 ]] || [[ $ready == true ]]; do + until [[ "$n" -ge 200 ]] || [[ $ready == true ]]; do docker logs vllm-gaudi-server &> ${LOG_PATH}/vllm-gaudi-service.log n=$((n+1)) if grep -q "Uvicorn running on" ${LOG_PATH}/vllm-gaudi-service.log; then @@ -89,9 +90,9 @@ function start_vllm_service_70B() { echo "container vllm-gaudi-server not found" exit 1 fi - sleep 5s + sleep 10s done - sleep 5s + sleep 10s echo "Service started successfully" } @@ -181,7 +182,7 @@ function validate_agent_service() { echo "======================Testing worker research agent======================" export agent_port="9096" prompt="generate NVDA financial research report" - local CONTENT=$(python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port) + local CONTENT=$(python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port --tool_choice "get_current_date" --tool_choice "get_share_performance") local EXIT_CODE=$(validate "$CONTENT" "NVDA" "research-agent-endpoint") echo $CONTENT echo $EXIT_CODE @@ -214,6 +215,7 @@ function validate_agent_service() { # docker logs react-agent-endpoint # exit 1 # fi + } function stop_agent_docker() { @@ -228,23 +230,23 @@ function stop_agent_docker() { echo "workpath: $WORKPATH" -# echo "=================== Stop containers ====================" -# stop_llm +echo "=================== Stop containers ====================" +stop_llm stop_agent_docker stop_dataprep cd $WORKPATH/tests # echo "=================== #1 Building docker images====================" -# build_vllm_docker_image -# build_dataprep_agent_images +build_vllm_docker_image +build_dataprep_agent_images #### for local test # build_agent_image_local # echo "=================== #1 Building docker images completed====================" # echo "=================== #2 Start vllm endpoint====================" -# start_vllm_service_70B +start_vllm_service_70B # echo "=================== #2 vllm endpoint started====================" # echo "=================== #3 Start dataprep and ingest data ====================" @@ -257,12 +259,12 @@ start_agents validate_agent_service echo "=================== #4 Agent test passed ====================" -# echo "=================== #5 Stop microservices ====================" -# stop_agent_docker -# stop_dataprep -# stop_llm -# echo "=================== #5 Microservices stopped====================" +echo "=================== #5 Stop microservices ====================" +stop_agent_docker +stop_dataprep +stop_llm +echo "=================== #5 Microservices stopped====================" -# echo y | docker system prune +echo y | docker system prune -# echo "ALL DONE!!" +echo "ALL DONE!!" From 2a9b58af235a72e9f9af9c198707183dec4e79cf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 12:15:20 +0000 Subject: [PATCH 14/20] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- FinanceAgent/prompts/research_prompt.py | 4 ++-- FinanceAgent/tests/test.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/FinanceAgent/prompts/research_prompt.py b/FinanceAgent/prompts/research_prompt.py index c78ab34250..7c3c925753 100644 --- a/FinanceAgent/prompts/research_prompt.py +++ b/FinanceAgent/prompts/research_prompt.py @@ -26,11 +26,11 @@ For writing a comprehensive analysis financial research report, you can use all the tools provided to retrieve information available for the company. -**Pay attention to the followings:** +**Pay attention to the following:** 1. Explicitly explain your working plan before you kick off. 2. Read the question carefully. Firstly You need get accurate `start_date` and `end_date` value, because most tools need the 2 values like company news, financials. You can get `end_date` with `get_current_date` tool if user doesn't provide. And you can infer `start_date` with `end_date` using the rule `start_date is one year earlier than end_date` if user doesn't provide. 3. Use tools one by one for clarity, especially when asking for instructions. -4. Provide stock performace, because the financial report is used for stock investment analysis. +4. Provide stock performance, because the financial report is used for stock investment analysis. 5. Read the execution history if any to understand the tools that have been called and the information that has been gathered. 6. Reason about the information gathered so far and decide if you can answer the question or if you need to call more tools. diff --git a/FinanceAgent/tests/test.py b/FinanceAgent/tests/test.py index 151a8a27b7..a6cd69583c 100644 --- a/FinanceAgent/tests/test.py +++ b/FinanceAgent/tests/test.py @@ -82,7 +82,7 @@ def test_supervisor_agent_single_turn(args): parser.add_argument("--prompt", type=str, help="prompt message") parser.add_argument("--agent_role", type=str, default="supervisor", help="supervisor or worker") parser.add_argument("--multi-turn", action="store_true", help="multi-turn conversation") - parser.add_argument('--tool_choice', nargs='+', help='limit tools') + parser.add_argument("--tool_choice", nargs="+", help="limit tools") args, _ = parser.parse_known_args() print(args) From 3a2068b19aa96d771206a154e4fdac93f42cdf7f Mon Sep 17 00:00:00 2001 From: Rita Brugarolas Date: Thu, 10 Apr 2025 21:29:01 +0000 Subject: [PATCH 15/20] set missing env var Signed-off-by: rbrugaro --- FinanceAgent/tests/test_compose_on_gaudi.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index cbb97894c0..c189affc73 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -14,7 +14,7 @@ model=meta-llama/Llama-3.3-70B-Instruct vllm_image=opea/vllm-gaudi:latest vllm_port=8086 vllm_image=$vllm_image -# HF_CACHE_DIR=/data2/huggingface +HF_CACHE_DIR=/data2/huggingface vllm_volume=${HF_CACHE_DIR} ####################################### From b599fdc92c85883135086c0cf3e09e4b75ddab1f Mon Sep 17 00:00:00 2001 From: Rita Brugarolas Date: Thu, 10 Apr 2025 22:28:54 +0000 Subject: [PATCH 16/20] README edits Signed-off-by: Rita Brugarolas --- FinanceAgent/README.md | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index e37d3df0e2..457ee192ca 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -26,7 +26,8 @@ export HF_TOKEN= Build docker images for dataprep, agent, agent-ui. ```bash -# use docker image build +cd GenAIExamples/FinanceAgent/docker_image_build +docker compose -f build.yaml build --no-cache ``` If deploy on Gaudi, also need to build vllm image. @@ -65,7 +66,42 @@ First, launch the redis databases and the dataprep microservice. ```bash docker compose -f $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml up -d ``` - +Validate datat ingest data and retrieval from database: +```bash +python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option ingest +python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option get +``` ### 3.3 Launch the multi-agent system +```bash +cd $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/ +bash launch_agents.sh +``` + ### 3.4 Validate agents + +FinQA Agent: +```bash +export agent_port="9095" +prompt="What is Gap's revenue in 2024?" +python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port +``` + +Research Agent: +```bash +export agent_port="9096" +prompt="generate NVDA financial research report" +python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port --tool_choice "get_current_date" --tool_choice "get_share_performance" +``` +Supervisor ReAct Agent: +```bash +export agent_port="9090" +python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --stream +``` + +Supervisor ReAct Agent Multi turn: +```bash +python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --multi-turn --stream + +``` + \ No newline at end of file From 9d33629c32616b7b82f6e9fe25f6c1f6b0aababd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 22:22:02 +0000 Subject: [PATCH 17/20] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- FinanceAgent/README.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index 457ee192ca..fbb3ad34d2 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -26,7 +26,7 @@ export HF_TOKEN= Build docker images for dataprep, agent, agent-ui. ```bash -cd GenAIExamples/FinanceAgent/docker_image_build +cd GenAIExamples/FinanceAgent/docker_image_build docker compose -f build.yaml build --no-cache ``` @@ -66,42 +66,49 @@ First, launch the redis databases and the dataprep microservice. ```bash docker compose -f $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml up -d ``` + Validate datat ingest data and retrieval from database: -```bash + +```bash python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option ingest python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option get ``` + ### 3.3 Launch the multi-agent system + ```bash cd $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/ bash launch_agents.sh ``` - ### 3.4 Validate agents FinQA Agent: -```bash + +```bash export agent_port="9095" prompt="What is Gap's revenue in 2024?" python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port ``` Research Agent: + ```bash export agent_port="9096" prompt="generate NVDA financial research report" python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port --tool_choice "get_current_date" --tool_choice "get_share_performance" ``` + Supervisor ReAct Agent: + ```bash export agent_port="9090" python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --stream ``` Supervisor ReAct Agent Multi turn: + ```bash python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --multi-turn --stream ``` - \ No newline at end of file From e6ed987b0b02bde096576f8b5bfd04b54c8a853c Mon Sep 17 00:00:00 2001 From: minmin-intel Date: Fri, 11 Apr 2025 00:10:43 +0000 Subject: [PATCH 18/20] update readme Signed-off-by: minmin-intel --- FinanceAgent/README.md | 32 ++++++++++++------ FinanceAgent/assets/finance_agent_arch.png | Bin 0 -> 58438 bytes .../intel/hpu/gaudi/launch_dataprep.sh | 12 +++++++ .../intel/hpu/gaudi/launch_vllm.sh | 4 +++ .../intel/hpu/gaudi/vllm_compose.yaml | 32 ++++++++++++++++++ FinanceAgent/tests/test_compose_on_gaudi.sh | 2 +- 6 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 FinanceAgent/assets/finance_agent_arch.png create mode 100644 FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh create mode 100644 FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh create mode 100644 FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index fbb3ad34d2..e0805876a9 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -1,6 +1,20 @@ # Finance Agent ## 1. Overview +The architecture of this Finance Agent example is shown in the figure below. The agent has 3 main functions: +1. Summarize long financial documents and provide key points. +2. Answer questions over financial documents, such as SEC filings. +3. Conduct research of a public company and provide an investment report of the company. + +![Finance Agent Architecture](assets/finance_agent_arch.png) + +The `dataprep` microservice can ingest financial documents in two formats: +1. PDF documents stored locally, such as SEC filings saved in local directory. +2. URLs, such as earnings call transcripts ([example](https://www.fool.com/earnings/call-transcripts/2025/03/06/costco-wholesale-cost-q2-2025-earnings-call-transc/)) and online SEC filings ([example](https://investors.3m.com/financials/sec-filings/content/0000066740-25-000006/0000066740-25-000006.pdf)). + +Please note: +1. Each financial document should be about one company. +2. URLs ending in `.htm` are not supported. ## 2. Getting started @@ -50,11 +64,8 @@ docker build --no-cache -f Dockerfile.hpu -t opea/vllm-gaudi:latest --shm-size=1 Below is the command to launch a vllm endpoint on Gaudi that serves `meta-llama/Llama-3.3-70B-Instruct` model on 4 Gaudi cards. ```bash -export vllm_port=8086 -export vllm_volume=$HF_CACHE_DIR -export max_length=16384 -export model="meta-llama/Llama-3.3-70B-Instruct" -docker run -d --runtime=habana --rm --name "vllm-gaudi-server" -e HABANA_VISIBLE_DEVICES=all -p $vllm_port:8000 -v $vllm_volume:/data -e HF_TOKEN=$HF_TOKEN -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN -e HF_HOME=/data -e OMPI_MCA_btl_vader_single_copy_mechanism=none -e PT_HPU_ENABLE_LAZY_COLLECTIVES=true -e http_proxy=$http_proxy -e https_proxy=$https_proxy -e no_proxy=$no_proxy -e VLLM_SKIP_WARMUP=true --cap-add=sys_nice --ipc=host opea/vllm-gaudi:comps --model ${model} --max-seq-len-to-capture $max_length --tensor-parallel-size 4 +cd $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi +bash launch_vllm.sh ``` ### 3.2 Prepare knowledge base @@ -64,20 +75,21 @@ The commands below will upload some example files into the knowledge base. You c First, launch the redis databases and the dataprep microservice. ```bash -docker compose -f $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/dataprep_compose.yaml up -d +# inside $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/ +bash launch_dataprep.sh ``` Validate datat ingest data and retrieval from database: ```bash -python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option ingest -python $WORKPATH/tests/test_redis_finance.py --port $DATAPREP_PORT --test_option get +python $WORKPATH/tests/test_redis_finance.py --port 6007 --test_option ingest +python $WORKPATH/tests/test_redis_finance.py --port 6007 --test_option get ``` ### 3.3 Launch the multi-agent system ```bash -cd $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/ +# inside $WORKDIR/GenAIExamples/FinanceAgent/docker_compose/intel/hpu/gaudi/ bash launch_agents.sh ``` @@ -96,7 +108,7 @@ Research Agent: ```bash export agent_port="9096" prompt="generate NVDA financial research report" -python3 $WORKDIR/GenAIExamples/AgentQnA/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port --tool_choice "get_current_date" --tool_choice "get_share_performance" +python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --prompt "$prompt" --agent_role "worker" --ext_port $agent_port --tool_choice "get_current_date" --tool_choice "get_share_performance" ``` Supervisor ReAct Agent: diff --git a/FinanceAgent/assets/finance_agent_arch.png b/FinanceAgent/assets/finance_agent_arch.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0f1ad5b0c7f980ca059a0797cbfaf2bc67718f GIT binary patch literal 58438 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�uYC5Ij7(+|FXgT1_A> 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 literal 0 HcmV?d00001 diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh new file mode 100644 index 0000000000..71d3bac692 --- /dev/null +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh @@ -0,0 +1,12 @@ +export host_ip=${ip_address} +export DATAPREP_PORT="6007" +export TEI_EMBEDDER_PORT="10221" +export REDIS_URL_VECTOR="redis://${ip_address}:6379" +export REDIS_URL_KV="redis://${ip_address}:6380" +export LLM_MODEL=$model +export LLM_ENDPOINT="http://${ip_address}:${vllm_port}" +export DATAPREP_COMPONENT_NAME="OPEA_DATAPREP_REDIS_FINANCE" +export EMBEDDING_MODEL_ID="BAAI/bge-base-en-v1.5" +export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:${TEI_EMBEDDER_PORT}" + +docker compose -f dataprep_compose.yaml up -d \ No newline at end of file diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh new file mode 100644 index 0000000000..f07185574b --- /dev/null +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh @@ -0,0 +1,4 @@ +export LLM_MODEL_ID="meta-llama/Llama-3.3-70B-Instruct" +export MAX_LEN=16384 + +docker compose -f vllm_compose.yaml up -d \ No newline at end of file diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml new file mode 100644 index 0000000000..30dbbc0bf6 --- /dev/null +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml @@ -0,0 +1,32 @@ + +services: + vllm-service: + image: ${REGISTRY:-opea}/vllm-gaudi:${TAG:-latest} + container_name: vllm-gaudi-server + ports: + - "8086:8000" + volumes: + - ${HF_CACHE_DIR}:/data + environment: + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + HF_TOKEN: ${HF_TOKEN} + HUGGING_FACE_HUB_TOKEN: ${HF_TOKEN} + HF_HOME: /data + HABANA_VISIBLE_DEVICES: all + OMPI_MCA_btl_vader_single_copy_mechanism: none + LLM_MODEL_ID: ${LLM_MODEL_ID} + VLLM_TORCH_PROFILER_DIR: "/mnt" + VLLM_SKIP_WARMUP: true + PT_HPU_ENABLE_LAZY_COLLECTIVES: true + healthcheck: + test: ["CMD-SHELL", "curl -f http://$host_ip:8086/health || exit 1"] + interval: 10s + timeout: 10s + retries: 100 + runtime: habana + cap_add: + - SYS_NICE + ipc: host + command: --model $LLM_MODEL_ID --tensor-parallel-size 4 --host 0.0.0.0 --port 8000 --max-seq-len-to-capture $MAX_LEN \ No newline at end of file diff --git a/FinanceAgent/tests/test_compose_on_gaudi.sh b/FinanceAgent/tests/test_compose_on_gaudi.sh index c189affc73..18615646b4 100644 --- a/FinanceAgent/tests/test_compose_on_gaudi.sh +++ b/FinanceAgent/tests/test_compose_on_gaudi.sh @@ -14,7 +14,7 @@ model=meta-llama/Llama-3.3-70B-Instruct vllm_image=opea/vllm-gaudi:latest vllm_port=8086 vllm_image=$vllm_image -HF_CACHE_DIR=/data2/huggingface +HF_CACHE_DIR=${model_cache:-"/data2/huggingface"} vllm_volume=${HF_CACHE_DIR} ####################################### From 727584c81668d5f6e5a654d618f1a61fb4871c00 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 00:03:47 +0000 Subject: [PATCH 19/20] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- FinanceAgent/README.md | 8 ++++++-- .../docker_compose/intel/hpu/gaudi/launch_dataprep.sh | 5 ++++- .../docker_compose/intel/hpu/gaudi/launch_vllm.sh | 5 ++++- .../docker_compose/intel/hpu/gaudi/vllm_compose.yaml | 5 ++++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index e0805876a9..2cd27aeb04 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -1,18 +1,22 @@ # Finance Agent ## 1. Overview + The architecture of this Finance Agent example is shown in the figure below. The agent has 3 main functions: + 1. Summarize long financial documents and provide key points. 2. Answer questions over financial documents, such as SEC filings. 3. Conduct research of a public company and provide an investment report of the company. ![Finance Agent Architecture](assets/finance_agent_arch.png) -The `dataprep` microservice can ingest financial documents in two formats: +The `dataprep` microservice can ingest financial documents in two formats: + 1. PDF documents stored locally, such as SEC filings saved in local directory. 2. URLs, such as earnings call transcripts ([example](https://www.fool.com/earnings/call-transcripts/2025/03/06/costco-wholesale-cost-q2-2025-earnings-call-transc/)) and online SEC filings ([example](https://investors.3m.com/financials/sec-filings/content/0000066740-25-000006/0000066740-25-000006.pdf)). -Please note: +Please note: + 1. Each financial document should be about one company. 2. URLs ending in `.htm` are not supported. diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh index 71d3bac692..9bb006c191 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_dataprep.sh @@ -1,3 +1,6 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + export host_ip=${ip_address} export DATAPREP_PORT="6007" export TEI_EMBEDDER_PORT="10221" @@ -9,4 +12,4 @@ export DATAPREP_COMPONENT_NAME="OPEA_DATAPREP_REDIS_FINANCE" export EMBEDDING_MODEL_ID="BAAI/bge-base-en-v1.5" export TEI_EMBEDDING_ENDPOINT="http://${ip_address}:${TEI_EMBEDDER_PORT}" -docker compose -f dataprep_compose.yaml up -d \ No newline at end of file +docker compose -f dataprep_compose.yaml up -d diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh index f07185574b..5d8d58641b 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/launch_vllm.sh @@ -1,4 +1,7 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + export LLM_MODEL_ID="meta-llama/Llama-3.3-70B-Instruct" export MAX_LEN=16384 -docker compose -f vllm_compose.yaml up -d \ No newline at end of file +docker compose -f vllm_compose.yaml up -d diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml index 30dbbc0bf6..8ca62e1e46 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/vllm_compose.yaml @@ -1,4 +1,7 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + services: vllm-service: image: ${REGISTRY:-opea}/vllm-gaudi:${TAG:-latest} @@ -29,4 +32,4 @@ services: cap_add: - SYS_NICE ipc: host - command: --model $LLM_MODEL_ID --tensor-parallel-size 4 --host 0.0.0.0 --port 8000 --max-seq-len-to-capture $MAX_LEN \ No newline at end of file + command: --model $LLM_MODEL_ID --tensor-parallel-size 4 --host 0.0.0.0 --port 8000 --max-seq-len-to-capture $MAX_LEN From baa827b86a22a4c5884208006049a5f62875b4ad Mon Sep 17 00:00:00 2001 From: lkk12014402 Date: Fri, 11 Apr 2025 06:13:44 +0000 Subject: [PATCH 20/20] add ui doc. --- FinanceAgent/README.md | 15 +++++++++++++++ FinanceAgent/assets/opea-agent-setting.png | Bin 0 -> 117291 bytes FinanceAgent/assets/opea-agent-test.png | Bin 0 -> 386674 bytes .../intel/hpu/gaudi/compose.yaml | 12 ++++++++++++ 4 files changed, 27 insertions(+) create mode 100644 FinanceAgent/assets/opea-agent-setting.png create mode 100644 FinanceAgent/assets/opea-agent-test.png diff --git a/FinanceAgent/README.md b/FinanceAgent/README.md index 2cd27aeb04..c652e06e02 100644 --- a/FinanceAgent/README.md +++ b/FinanceAgent/README.md @@ -128,3 +128,18 @@ Supervisor ReAct Agent Multi turn: python3 $WORKDIR/GenAIExamples/FinanceAgent/tests/test.py --agent_role "supervisor" --ext_port $agent_port --multi-turn --stream ``` + +## How to interact with the agent system with UI + +The UI microservice is launched in the previous step with the other microservices. +To see the UI, open a web browser to `http://${ip_address}:5175` to access the UI. Note the `ip_address` here is the host IP of the UI microservice. + +1. `create Admin Account` with a random value + +2. use an opea agent endpoint, for example, the `Research Agent` endpoint `http://$ip_address:9096/v1`, which is a openai compatible api + +![opea-agent-setting](assets/opea-agent-setting.png) + +3. test opea agent with ui + +![opea-agent-test](assets/opea-agent-test.png) diff --git a/FinanceAgent/assets/opea-agent-setting.png b/FinanceAgent/assets/opea-agent-setting.png new file mode 100644 index 0000000000000000000000000000000000000000..0d511966435b9c638625647dcc88b08a2ca6216f GIT binary patch literal 117291 zcmdqJg;!h4`ag`80tH%Hin|@$tyn3vSb-J`?(Xgotfdt9;*YOKj7HPsmWnrR3{MLn&YBBEnp(3=$hXFwvP^VLAWn)`GS@z zOLB8_Gi^6A=k#+9gYv(thlJeWK7R7Pe06)DZE&j{=0#& z9vJ`cJ)lrIz<=MtRLE)eEA78~`SgR}|8w0G{3}eBIhASMcIEIy)2Y{jbODr={>JXTgVLy)6l6aMWkna;TZpew_ZPe~cb@8zvoyEHLl> zxHVl)9TXH4s{z7`s8IM%JLoBJ#8pnLGieJz5ZAv*S=r48-ob_dOqwL-LD$>g^`Ieb z0;6!U{S_m%_sBOJ7hE+BF8Ga)H zct>h!Qr4*89Z;ZH4PWu-Hse_%jU&8xw2<{){lBFpApCat9GaJ@LTuc>iw =S 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%0D|yvcI}#EF%17 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


u^1Y59gF+M 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 LC`ltpF~AJ=-YYy_0EfPY#i_J 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%0DpL`!7B~j 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

C^R_Y4}jiutxLG*EqV9m?_U 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

OL|al8Vcvl{1=DHPnq|21J~? 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�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 literal 0 HcmV?d00001 diff --git a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml index 5748ec8f81..cc02847be9 100644 --- a/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml +++ b/FinanceAgent/docker_compose/intel/hpu/gaudi/compose.yaml @@ -119,3 +119,15 @@ services: MAX_TOTAL_TOKENS: ${MAX_TOTAL_TOKENS} DocSum_COMPONENT_NAME: ${DocSum_COMPONENT_NAME:-OpeaDocSumvLLM} restart: unless-stopped + + agent-ui: + image: opea/agent-ui:latest + container_name: agent-ui + environment: + host_ip: ${host_ip} + no_proxy: ${no_proxy} + http_proxy: ${http_proxy} + https_proxy: ${https_proxy} + ports: + - "5175:8080" + ipc: host