Spaces:
Sleeping
Sleeping
version upgrade
Browse files- agent.py +8 -8
- requirements.txt +1 -1
- st_app.py +2 -2
agent.py
CHANGED
@@ -10,8 +10,9 @@ load_dotenv(override=True)
|
|
10 |
|
11 |
from pydantic import Field, BaseModel
|
12 |
from vectara_agentic.agent import Agent
|
|
|
13 |
from vectara_agentic.tools import ToolsFactory, VectaraToolFactory
|
14 |
-
from vectara_agentic.tools_catalog import
|
15 |
|
16 |
initial_prompt = "How can I help you today?"
|
17 |
|
@@ -23,14 +24,13 @@ get_headers = {
|
|
23 |
"Connection": "keep-alive",
|
24 |
}
|
25 |
|
26 |
-
def create_assistant_tools(cfg):
|
27 |
|
28 |
class QueryHackerNews(BaseModel):
|
29 |
query: str = Field(..., description="The user query.")
|
30 |
|
31 |
vec_factory = VectaraToolFactory(vectara_api_key=cfg.api_key,
|
32 |
-
|
33 |
-
vectara_corpus_id=cfg.corpus_id)
|
34 |
summarizer = 'vectara-experimental-summary-ext-2023-12-11-med-omni'
|
35 |
ask_hackernews = vec_factory.create_rag_tool(
|
36 |
tool_name = "ask_hackernews",
|
@@ -121,6 +121,7 @@ def create_assistant_tools(cfg):
|
|
121 |
stories = get_top_stories(n_stories)
|
122 |
texts = [get_story_text(story_id) for story_id in stories[:n_stories]]
|
123 |
all_stories = '---------\n\n'.join(texts)
|
|
|
124 |
return summarize_text(all_stories)
|
125 |
|
126 |
tools_factory = ToolsFactory()
|
@@ -154,9 +155,9 @@ def initialize_agent(_cfg, agent_progress_callback = None):
|
|
154 |
- You can use the tavily_search tool to gain additional information if needed for follow up questions about Hacker News topic.
|
155 |
- When including information or links provided by the tavily_search tool, make sure to notify the user in your response that this is not based on Hacker News stories.
|
156 |
"""
|
157 |
-
|
158 |
agent = Agent(
|
159 |
-
tools=create_assistant_tools(_cfg),
|
160 |
topic="hacker news",
|
161 |
custom_instructions=bot_instructions,
|
162 |
agent_progress_callback=agent_progress_callback
|
@@ -166,8 +167,7 @@ def initialize_agent(_cfg, agent_progress_callback = None):
|
|
166 |
|
167 |
def get_agent_config() -> OmegaConf:
|
168 |
cfg = OmegaConf.create({
|
169 |
-
'
|
170 |
-
'corpus_id': str(os.environ['VECTARA_CORPUS_ID']),
|
171 |
'api_key': str(os.environ['VECTARA_API_KEY']),
|
172 |
'examples': os.environ.get('QUERY_EXAMPLES', None),
|
173 |
'demo_name': "hacker-news-chat",
|
|
|
10 |
|
11 |
from pydantic import Field, BaseModel
|
12 |
from vectara_agentic.agent import Agent
|
13 |
+
from vectara_agentic.agent_config import AgentConfig
|
14 |
from vectara_agentic.tools import ToolsFactory, VectaraToolFactory
|
15 |
+
from vectara_agentic.tools_catalog import ToolsCatalog
|
16 |
|
17 |
initial_prompt = "How can I help you today?"
|
18 |
|
|
|
24 |
"Connection": "keep-alive",
|
25 |
}
|
26 |
|
27 |
+
def create_assistant_tools(cfg, agent_config):
|
28 |
|
29 |
class QueryHackerNews(BaseModel):
|
30 |
query: str = Field(..., description="The user query.")
|
31 |
|
32 |
vec_factory = VectaraToolFactory(vectara_api_key=cfg.api_key,
|
33 |
+
vectara_corpus_key=cfg.corpus_key)
|
|
|
34 |
summarizer = 'vectara-experimental-summary-ext-2023-12-11-med-omni'
|
35 |
ask_hackernews = vec_factory.create_rag_tool(
|
36 |
tool_name = "ask_hackernews",
|
|
|
121 |
stories = get_top_stories(n_stories)
|
122 |
texts = [get_story_text(story_id) for story_id in stories[:n_stories]]
|
123 |
all_stories = '---------\n\n'.join(texts)
|
124 |
+
summarize_text = ToolsCatalog(agent_config).summarize_text
|
125 |
return summarize_text(all_stories)
|
126 |
|
127 |
tools_factory = ToolsFactory()
|
|
|
155 |
- You can use the tavily_search tool to gain additional information if needed for follow up questions about Hacker News topic.
|
156 |
- When including information or links provided by the tavily_search tool, make sure to notify the user in your response that this is not based on Hacker News stories.
|
157 |
"""
|
158 |
+
agent_config = AgentConfig()
|
159 |
agent = Agent(
|
160 |
+
tools=create_assistant_tools(_cfg, agent_config),
|
161 |
topic="hacker news",
|
162 |
custom_instructions=bot_instructions,
|
163 |
agent_progress_callback=agent_progress_callback
|
|
|
167 |
|
168 |
def get_agent_config() -> OmegaConf:
|
169 |
cfg = OmegaConf.create({
|
170 |
+
'corpus_key': str(os.environ['VECTARA_CORPUS_KEY']),
|
|
|
171 |
'api_key': str(os.environ['VECTARA_API_KEY']),
|
172 |
'examples': os.environ.get('QUERY_EXAMPLES', None),
|
173 |
'demo_name': "hacker-news-chat",
|
requirements.txt
CHANGED
@@ -6,5 +6,5 @@ streamlit_feedback==0.1.3
|
|
6 |
uuid==1.30
|
7 |
langdetect==1.0.9
|
8 |
langcodes==3.4.0
|
9 |
-
vectara-agentic==0.
|
10 |
|
|
|
6 |
uuid==1.30
|
7 |
langdetect==1.0.9
|
8 |
langcodes==3.4.0
|
9 |
+
vectara-agentic==0.2.0
|
10 |
|
st_app.py
CHANGED
@@ -132,8 +132,8 @@ async def launch_bot():
|
|
132 |
if st.session_state.prompt:
|
133 |
with st.chat_message("assistant", avatar='🤖'):
|
134 |
st.session_state.status = st.status('Processing...', expanded=False)
|
135 |
-
|
136 |
-
res = escape_dollars_outside_latex(
|
137 |
message = {"role": "assistant", "content": res, "avatar": '🤖'}
|
138 |
st.session_state.messages.append(message)
|
139 |
st.markdown(res)
|
|
|
132 |
if st.session_state.prompt:
|
133 |
with st.chat_message("assistant", avatar='🤖'):
|
134 |
st.session_state.status = st.status('Processing...', expanded=False)
|
135 |
+
response = st.session_state.agent.chat(st.session_state.prompt)
|
136 |
+
res = escape_dollars_outside_latex(response.response)
|
137 |
message = {"role": "assistant", "content": res, "avatar": '🤖'}
|
138 |
st.session_state.messages.append(message)
|
139 |
st.markdown(res)
|