From b83d0460312ca5c76d32522f35a002f727bcc78e Mon Sep 17 00:00:00 2001 From: 3rd-Son Date: Wed, 17 Dec 2025 11:08:00 +0100 Subject: [PATCH] changed ai consultant agent from exa to tavily --- memory_agents/ai_consultant_agent/README.md | 10 ++-- memory_agents/ai_consultant_agent/app.py | 52 ++++++++---------- .../assets/Memori_Logo.png | Bin 0 -> 8527 bytes .../assets/tavily_logo.png | Bin 0 -> 62251 bytes memory_agents/ai_consultant_agent/workflow.py | 49 +++++++++-------- 5 files changed, 55 insertions(+), 56 deletions(-) create mode 100644 memory_agents/ai_consultant_agent/assets/Memori_Logo.png create mode 100644 memory_agents/ai_consultant_agent/assets/tavily_logo.png diff --git a/memory_agents/ai_consultant_agent/README.md b/memory_agents/ai_consultant_agent/README.md index f269effc..2f8d2c7e 100644 --- a/memory_agents/ai_consultant_agent/README.md +++ b/memory_agents/ai_consultant_agent/README.md @@ -2,14 +2,14 @@ ## AI Consultant Agent with Memori -An AI-powered consulting agent that uses **Memori v3** as a long-term memory fabric and **ExaAI** for research. Built with Streamlit for the UI. +An AI-powered consulting agent that uses **Memori v3** as a long-term memory fabric and **Tavily** for research. Built with Streamlit for the UI. ## Features - 🧠 **AI Readiness Assessment**: Analyze a company’s AI maturity, goals, and constraints. - 🎯 **Use-Case Recommendations**: Suggest where to integrate AI (workflows, CX, analytics, product, ecosystem). - πŸ’΅ **Cost Bands**: Provide rough cost bands and complexity for proposed AI initiatives. -- βš™οΈ **Web / Case-Study Research**: Use **ExaAI** to pull in relevant case studies and industry examples. +- βš™οΈ **Web / Case-Study Research**: Use **Tavily** to pull in relevant case studies and industry examples. - 🧾 **Persistent Memory (Memori v3)**: Store and reuse context across assessments and follow-up questions. ## Prerequisites @@ -17,7 +17,7 @@ An AI-powered consulting agent that uses **Memori v3** as a long-term memory fab - Python 3.11 or higher - [uv](https://github.com/astral-sh/uv) package manager (fast Python package installer) - OpenAI API key (`OPENAI_API_KEY`) -- ExaAI API key (`EXA_API_KEY`) +- Tavily API key (`TAVILY_API_KEY`) - Memori API key (`MEMORI_API_KEY`) - (Optional) `SQLITE_DB_PATH` if you want to override the default `./memori.sqlite` path @@ -65,7 +65,7 @@ Create a `.env` file in this directory: ```bash OPENAI_API_KEY=your_openai_api_key_here -EXA_API_KEY=your_exa_api_key_here +TAVILY_API_KEY=your_tavily_api_key_here # Optional: # SQLITE_DB_PATH=./memori.sqlite ``` @@ -113,7 +113,7 @@ In the UI you can: ```text ai_consultant_agent/ β”œβ”€β”€ app.py # Streamlit interface (assessment + memory tabs) -β”œβ”€β”€ workflow.py # ExaAI research + OpenAI-based consulting workflow +β”œβ”€β”€ workflow.py # Tavily research + OpenAI-based consulting workflow β”œβ”€β”€ pyproject.toml # Project dependencies (uv format) β”œβ”€β”€ README.md # This file β”œβ”€β”€ requirements.txt # PIP-style dependency list diff --git a/memory_agents/ai_consultant_agent/app.py b/memory_agents/ai_consultant_agent/app.py index 59b5ecf6..8eea19c7 100644 --- a/memory_agents/ai_consultant_agent/app.py +++ b/memory_agents/ai_consultant_agent/app.py @@ -40,19 +40,15 @@ def _load_inline_image(path: str, height_px: int) -> str: # Reuse existing logos from other agents -memori_img_inline = _load_inline_image( - "../job_search_agent/assets/Memori_Logo.png", height_px=90 -) -exa_img_inline = _load_inline_image( - "../job_search_agent/assets/exa_logo.png", height_px=70 -) +memori_img_inline = _load_inline_image("assets/Memori_Logo.png", height_px=90) +tavily_img_inline = _load_inline_image("assets/tavily_logo.png", height_px=70) title_html = f"""

AI Consultant Agent with {memori_img_inline}and - {exa_img_inline} + {tavily_img_inline}

""" @@ -76,11 +72,11 @@ def _load_inline_image(path: str, height_px: int) -> str: help="Used for Memori Advanced Augmentation and higher quotas.", ) - exa_api_key_input = st.text_input( - "ExaAI API Key", - value=os.getenv("EXA_API_KEY", ""), + tavily_api_key_input = st.text_input( + "Tavily API Key", + value=os.getenv("TAVILY_API_KEY", ""), type="password", - help="Your ExaAI API key for web/case-study search", + help="Your Tavily API key for web/case-study search", ) if st.button("Save API Keys"): @@ -88,14 +84,14 @@ def _load_inline_image(path: str, height_px: int) -> str: os.environ["OPENAI_API_KEY"] = openai_api_key_input if memori_api_key_input: os.environ["MEMORI_API_KEY"] = memori_api_key_input - if exa_api_key_input: - os.environ["EXA_API_KEY"] = exa_api_key_input - if openai_api_key_input or exa_api_key_input or memori_api_key_input: + if tavily_api_key_input: + os.environ["TAVILY_API_KEY"] = tavily_api_key_input + if openai_api_key_input or tavily_api_key_input or memori_api_key_input: st.success("βœ… API keys saved for this session") else: st.warning("Please enter at least one API key") - both_keys_present = bool(os.getenv("EXA_API_KEY")) and bool( + both_keys_present = bool(os.getenv("TAVILY_API_KEY")) and bool( os.getenv("OPENAI_API_KEY") ) if both_keys_present: @@ -107,13 +103,13 @@ def _load_inline_image(path: str, height_px: int) -> str: st.markdown("### πŸ’‘ About") st.markdown( """ - This application acts as an **AI consultant** for companies: - - Assesses **AI readiness** and where to integrate AI. - - Suggests **use cases** across workforce, tools, and ecosystem. - - Provides rough **cost bands** and risks. - - Uses **Memori** + to remember past assessments and Q&A. + This application acts as an *AI consultant* for companies: + - Assesses *AI readiness* and where to integrate AI. + - Suggests *use cases* across workforce, tools, and ecosystem. + - Provides rough *cost bands* and risks. + - Uses *Memori* + to remember past assessments and Q&A. - Web research is powered by **ExaAI**, and reasoning is powered by **OpenAI** via Memori. + Web research is powered by *Tavily, and reasoning is powered by **OpenAI* via Memori. --- @@ -122,7 +118,7 @@ def _load_inline_image(path: str, height_px: int) -> str: ) # Get API keys from environment -exa_key = os.getenv("EXA_API_KEY", "") +tavily_key = os.getenv("TAVILY_API_KEY", "") # Initialize session state if "assessment_markdown" not in st.session_state: @@ -166,8 +162,8 @@ def _load_inline_image(path: str, height_px: int) -> str: st.warning(f"Memori v3 initialization note: {str(e)}") # Check if keys are set for required services -if not exa_key: - st.warning("⚠️ Please enter your ExaAI API key in the sidebar to run assessments!") +if not tavily_key: + st.warning("⚠️ Please enter your Tavily API key in the sidebar to run assessments!") st.stop() if "openai_client" not in st.session_state: st.warning( @@ -285,7 +281,7 @@ def _load_inline_image(path: str, height_px: int) -> str: st.session_state.company_profile = profile st.markdown( - f"## 🧾 AI Readiness & Cost Assessment for **{profile.company_name}**" + f"## 🧾 AI Readiness & Cost Assessment for *{profile.company_name}*" ) st.markdown(assessment_markdown) @@ -299,7 +295,7 @@ def _load_inline_image(path: str, height_px: int) -> str: st.markdown( "### Last Assessment Result " + ( - f"for **{st.session_state.company_profile.company_name}**" + f"for *{st.session_state.company_profile.company_name}*" if st.session_state.company_profile else "" ) @@ -311,12 +307,12 @@ def _load_inline_image(path: str, height_px: int) -> str: if st.session_state.company_profile: st.info( - f"Most recent company: **{st.session_state.company_profile.company_name}** " + f"Most recent company: *{st.session_state.company_profile.company_name}* " f"({st.session_state.company_profile.industry})" ) else: st.info( - "Run at least one assessment in the **AI Assessment** tab to ground the memory context." + "Run at least one assessment in the *AI Assessment* tab to ground the memory context." ) for message in st.session_state.memory_messages: diff --git a/memory_agents/ai_consultant_agent/assets/Memori_Logo.png b/memory_agents/ai_consultant_agent/assets/Memori_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4416b815f71d544d7ce484340921a1dbe90b55 GIT binary patch literal 8527 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%0As#r%! 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 UIhbJ!`v*==N?Ec-+$8w_0o7|wVgLXD literal 0 HcmV?d00001 diff --git a/memory_agents/ai_consultant_agent/workflow.py b/memory_agents/ai_consultant_agent/workflow.py index b9933469..f2f11b1d 100644 --- a/memory_agents/ai_consultant_agent/workflow.py +++ b/memory_agents/ai_consultant_agent/workflow.py @@ -1,13 +1,13 @@ """ AI Consultant Workflow -Uses LangChain for reasoning and ExaAI for web/case-study research. +Uses LangChain for reasoning and Tavily for web/case-study research. """ import os from typing import List, Optional, Tuple, Any from dotenv import load_dotenv -from exa_py import Exa +from tavily import TavilyClient from pydantic import BaseModel, Field # Load environment variables from .env if present @@ -54,7 +54,7 @@ class CompanyProfile(BaseModel): class ResearchSnippet(BaseModel): - """Single ExaAI search result distilled for prompting.""" + """Single Tavily search result distilled for prompting.""" title: str url: str @@ -81,40 +81,43 @@ def _build_research_query(profile: CompanyProfile) -> str: return " ".join(parts) -def search_ai_case_studies_with_exa( +def search_ai_case_studies_with_tavily( profile: CompanyProfile, max_results: int = 5 ) -> List[ResearchSnippet]: """ - Use ExaAI to retrieve a handful of relevant AI case studies / examples. + Use Tavily to retrieve a handful of relevant AI case studies / examples. """ - exa_key = os.getenv("EXA_API_KEY") - if not exa_key: - raise RuntimeError("EXA_API_KEY not set in environment variables") + tavily_key = os.getenv("TAVILY_API_KEY") + if not tavily_key: + raise RuntimeError("TAVILY_API_KEY not set in environment variables") - client = Exa(api_key=exa_key) + client = TavilyClient(api_key=tavily_key) query = _build_research_query(profile) try: - results = client.search_and_contents( + # Use advanced depth to get richer snippets; return up to max_results + results = client.search( query=query, - num_results=max_results, - type="auto", - text=True, + search_depth="advanced", + max_results=max_results, + include_answer=False, + include_raw_content=False, ) except Exception as e: - raise RuntimeError(f"Error calling ExaAI: {e}") from e + raise RuntimeError(f"Error calling Tavily: {e}") from e snippets: List[ResearchSnippet] = [] - for r in results.results: - if not (r.title or r.url or r.text): - continue - text = (r.text or "").strip() - # Keep a concise but useful excerpt + for r in results.get("results", []): + title = (r.get("title") or "AI case study").strip() + url = r.get("url") or "" + text = (r.get("content") or r.get("snippet") or "").strip() snippet_text = text[:800] if text else "" + if not (title or url or snippet_text): + continue snippets.append( ResearchSnippet( - title=r.title or "AI case study", - url=r.url or "", + title=title, + url=url, snippet=snippet_text, ) ) @@ -127,7 +130,7 @@ def run_ai_assessment( ) -> Tuple[str, List[ResearchSnippet]]: """ Main workflow: - - Pull a few relevant case studies via ExaAI. + - Pull a few relevant case studies via Tavily. - Ask the LLM (LangChain-compatible) to produce a structured consulting report. Returns: @@ -135,7 +138,7 @@ def run_ai_assessment( research_snippets: List[ResearchSnippet] -> For optional debugging / display. """ # Step 1: web research - research_snippets = search_ai_case_studies_with_exa(profile, max_results=5) + research_snippets = search_ai_case_studies_with_tavily(profile, max_results=5) # Step 2: build prompt for the consultant LLM research_section = ""