ofermend commited on
Commit
3a7ce4d
·
1 Parent(s): b8d1094
Files changed (4) hide show
  1. Dockerfile +4 -1
  2. agent.py +22 -1
  3. requirements.txt +3 -3
  4. st_app.py +1 -1
Dockerfile CHANGED
@@ -7,12 +7,15 @@ COPY ./requirements.txt /app/requirements.txt
7
  RUN pip3 install --no-cache-dir --upgrade pip
8
  RUN pip3 install --no-cache-dir wheel setuptools build
9
  RUN pip3 install --no-cache-dir --use-pep517 -r /app/requirements.txt
10
-
11
  # User
12
  RUN useradd -m -u 1000 user
13
  USER user
14
  ENV HOME /home/user
15
  ENV PATH $HOME/.local/bin:$PATH
 
 
 
16
 
17
  WORKDIR $HOME
18
  RUN mkdir app
 
7
  RUN pip3 install --no-cache-dir --upgrade pip
8
  RUN pip3 install --no-cache-dir wheel setuptools build
9
  RUN pip3 install --no-cache-dir --use-pep517 -r /app/requirements.txt
10
+
11
  # User
12
  RUN useradd -m -u 1000 user
13
  USER user
14
  ENV HOME /home/user
15
  ENV PATH $HOME/.local/bin:$PATH
16
+ ENV TIKTOKEN_CACHE_DIR $HOME/.cache/tiktoken
17
+
18
+ RUN mkdir -p $HOME/.cache/tiktoken
19
 
20
  WORKDIR $HOME
21
  RUN mkdir app
agent.py CHANGED
@@ -5,6 +5,8 @@ from omegaconf import OmegaConf
5
 
6
  from vectara_agentic.agent import Agent
7
  from vectara_agentic.tools import VectaraToolFactory, ToolsFactory
 
 
8
 
9
  from dotenv import load_dotenv
10
  load_dotenv(override=True)
@@ -29,7 +31,6 @@ def create_assistant_tools(cfg):
29
  return tickers
30
 
31
  class QueryHMC(BaseModel):
32
- query: str = Field(description="The user query.")
33
  ticker: Optional[str] = Field(
34
  default=None,
35
  description="The company ticker.",
@@ -80,8 +81,10 @@ def create_assistant_tools(cfg):
80
  n_sentences_before = 2, n_sentences_after = 2, lambda_val = 0.005,
81
  vectara_summarizer = summarizer,
82
  summary_num_results = 10,
 
83
  include_citations = True,
84
  verbose = True,
 
85
  )
86
  tools_factory = ToolsFactory()
87
  return [ask_hmc] + [tools_factory.create_tool(get_company_info)]
@@ -95,6 +98,22 @@ def initialize_agent(_cfg, agent_progress_callback=None):
95
  - Note that 10Q reports exist for quarters 1, 2, 3 and for the 4th quarter there is a 10K report.
96
  - If the 'ask_hmc' tool does not return any results, check the year and ticker and try calling it again with the right values.
97
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
  agent = Agent(
100
  tools=create_assistant_tools(_cfg),
@@ -102,6 +121,8 @@ def initialize_agent(_cfg, agent_progress_callback=None):
102
  custom_instructions=bot_instructions,
103
  agent_progress_callback=agent_progress_callback,
104
  verbose=True,
 
 
105
  )
106
  agent.report()
107
  return agent
 
5
 
6
  from vectara_agentic.agent import Agent
7
  from vectara_agentic.tools import VectaraToolFactory, ToolsFactory
8
+ from vectara_agentic.agent_config import AgentConfig
9
+ from vectara_agentic.types import ModelProvider, AgentType
10
 
11
  from dotenv import load_dotenv
12
  load_dotenv(override=True)
 
31
  return tickers
32
 
33
  class QueryHMC(BaseModel):
 
34
  ticker: Optional[str] = Field(
35
  default=None,
36
  description="The company ticker.",
 
81
  n_sentences_before = 2, n_sentences_after = 2, lambda_val = 0.005,
82
  vectara_summarizer = summarizer,
83
  summary_num_results = 10,
84
+ max_tokens = 4096, max_response_chars = 8192,
85
  include_citations = True,
86
  verbose = True,
87
+ save_history = True,
88
  )
89
  tools_factory = ToolsFactory()
90
  return [ask_hmc] + [tools_factory.create_tool(get_company_info)]
 
98
  - Note that 10Q reports exist for quarters 1, 2, 3 and for the 4th quarter there is a 10K report.
99
  - If the 'ask_hmc' tool does not return any results, check the year and ticker and try calling it again with the right values.
100
  """
101
+ agent_config = AgentConfig(
102
+ agent_type = os.getenv("VECTARA_AGENTIC_AGENT_TYPE", AgentType.OPENAI.value),
103
+ main_llm_provider = os.getenv("VECTARA_AGENTIC_MAIN_LLM_PROVIDER", ModelProvider.OPENAI.value),
104
+ main_llm_model_name = os.getenv("VECTARA_AGENTIC_MAIN_MODEL_NAME", ""),
105
+ tool_llm_provider = os.getenv("VECTARA_AGENTIC_TOOL_LLM_PROVIDER", ModelProvider.OPENAI.value),
106
+ tool_llm_model_name = os.getenv("VECTARA_AGENTIC_TOOL_MODEL_NAME", ""),
107
+ observer = os.getenv("VECTARA_AGENTIC_OBSERVER_TYPE", "NO_OBSERVER")
108
+ )
109
+ fallback_agent_config = AgentConfig(
110
+ agent_type = os.getenv("VECTARA_AGENTIC_FALLBACK_AGENT_TYPE", AgentType.OPENAI.value),
111
+ main_llm_provider = os.getenv("VECTARA_AGENTIC_FALLBACK_MAIN_LLM_PROVIDER", ModelProvider.OPENAI.value),
112
+ main_llm_model_name = os.getenv("VECTARA_AGENTIC_FALLBACK_MAIN_MODEL_NAME", ""),
113
+ tool_llm_provider = os.getenv("VECTARA_AGENTIC_FALLBACK_TOOL_LLM_PROVIDER", ModelProvider.OPENAI.value),
114
+ tool_llm_model_name = os.getenv("VECTARA_AGENTIC_FALLBACK_TOOL_MODEL_NAME", ""),
115
+ observer = os.getenv("VECTARA_AGENTIC_OBSERVER_TYPE", "NO_OBSERVER")
116
+ )
117
 
118
  agent = Agent(
119
  tools=create_assistant_tools(_cfg),
 
121
  custom_instructions=bot_instructions,
122
  agent_progress_callback=agent_progress_callback,
123
  verbose=True,
124
+ agent_config=agent_config,
125
+ fallback_agent_config=fallback_agent_config,
126
  )
127
  agent.report()
128
  return agent
requirements.txt CHANGED
@@ -1,9 +1,9 @@
1
  omegaconf==2.3.0
2
  python-dotenv==1.0.1
3
- streamlit==1.43.2
4
  streamlit_feedback==0.1.3
5
  uuid==1.30
6
  langdetect==1.0.9
7
  langcodes==3.4.0
8
- vectara-agentic==0.2.9
9
- torch==2.6.0
 
1
  omegaconf==2.3.0
2
  python-dotenv==1.0.1
3
+ streamlit==1.45.0
4
  streamlit_feedback==0.1.3
5
  uuid==1.30
6
  langdetect==1.0.9
7
  langcodes==3.4.0
8
+ vectara-agentic==0.2.15
9
+ torch==2.6.0
st_app.py CHANGED
@@ -139,7 +139,7 @@ async def launch_bot():
139
  if st.session_state.prompt:
140
  with st.chat_message("assistant", avatar='🤖'):
141
  st.session_state.status = st.status('Processing...', expanded=False)
142
- response = st.session_state.agent.chat(st.session_state.prompt)
143
  res = escape_dollars_outside_latex(response.response)
144
  message = {"role": "assistant", "content": res, "avatar": '🤖'}
145
  st.session_state.messages.append(message)
 
139
  if st.session_state.prompt:
140
  with st.chat_message("assistant", avatar='🤖'):
141
  st.session_state.status = st.status('Processing...', expanded=False)
142
+ response = await st.session_state.agent.achat(st.session_state.prompt)
143
  res = escape_dollars_outside_latex(response.response)
144
  message = {"role": "assistant", "content": res, "avatar": '🤖'}
145
  st.session_state.messages.append(message)