ofermend commited on
Commit
fafa97c
·
1 Parent(s): 4c78198

updates to work with ANTHROPIC

Browse files
Files changed (4) hide show
  1. agent.py +22 -42
  2. app.py +8 -1
  3. requirements.txt +2 -3
  4. st_app.py +0 -1
agent.py CHANGED
@@ -30,11 +30,14 @@ prompt = """
30
  $qResult.getText()
31
  #end
32
  #end
33
- Generate a coherent response (but no more than $vectaraOutChars characters) to the query *** $vectaraQuery *** using information and facts in the search results provided.
34
  Give a slight preference to search results that appear earlier in the list.
35
  Include statistical and numerical evidence to support and contextualize your response.
 
 
36
  Only cite relevant search results in your answer following these specific instructions: $vectaraCitationInstructions
37
- If the search results are irrelevant to the query, respond with ***I do not have enough information to answer this question.***. Respond always in the $vectaraLangName language, and only in that language."}
 
38
  ]
39
  """
40
 
@@ -54,71 +57,48 @@ def create_assistant_tools(cfg):
54
  Responds to an user question about a particular result, based on the publications.
55
  """,
56
  tool_args_schema = QueryPublicationsArgs,
57
- # reranker = "multilingual_reranker_v1", rerank_k = 100,
58
  reranker = "chain", rerank_k = 100,
59
  rerank_chain = [
60
  {
61
  "type": "multilingual_reranker_v1",
62
- # "cutoff": 0.2
63
  },
64
  {
65
  "type": "mmr",
66
- "diversity_bias": 0.2,
67
- "limit": 50
68
  }
69
  ],
70
- n_sentences_before = 2, n_sentences_after = 2, lambda_val = 0.005,
71
- summary_num_results = 15,
72
  vectara_summarizer = summarizer,
73
  include_citations = True,
74
- vectara_prompt_text=prompt,
75
  save_history = True,
76
- verbose=False
77
  )
78
 
79
- search_publications = vec_factory.create_search_tool(
80
- tool_name = "search_publications",
81
- tool_description = """
82
- Returns matching publications to a user query.
83
- """,
84
- tool_args_schema = QueryPublicationsArgs,
85
- reranker = "chain", rerank_k = 100,
86
- rerank_chain = [
87
- {
88
- "type": "multilingual_reranker_v1",
89
- # "cutoff": 0.2
90
- },
91
- {
92
- "type": "mmr",
93
- "diversity_bias": 0.2,
94
- "limit": 50
95
- }
96
- ],
97
- # reranker = "multilingual_reranker_v1", rerank_k = 100,
98
- n_sentences_before = 2, n_sentences_after = 2, lambda_val = 0.005,
99
- save_history = True,
100
- verbose=True
101
- )
102
-
103
-
104
  tools_factory = ToolsFactory()
105
  return (
106
  tools_factory.standard_tools() +
107
- [ask_publications, search_publications]
108
  )
109
 
110
  def initialize_agent(_cfg, agent_progress_callback=None):
111
  menarini_bot_instructions = """
112
- - You are an expert statistician and clinical trial data analyst with extensive experience in designing, analyzing, and interpreting clinical research data.
113
- - Your responses should be technically rigorous, data-driven, and written for an audience familiar with advanced statistical methodologies, regulatory standards, and the nuances of clinical trial design.
 
 
114
  - Call the ask_publications tool to retreive information to answer the user query.
115
- If the initial query lacks comprehensive data, continue to query ask_publications with refined search parameters until you retrieve all necessary numerical details
116
- - Call the search_publications tool to retreive a list of publications that may contain the information needed to answer the user query.
117
- The results include the document_id of each publication, and metadata.
 
118
  - When responding to queries:
119
  1) Use precise statistical terminology (e.g., randomization, blinding, intention-to-treat, type I/II error, p-values, confidence intervals, Bayesian methods, etc.)
120
  and reference common methodologies or guidelines where applicable (e.g., CONSORT, FDA, EMA).
121
- 2) Your responses must include contextual information such as sample size and population characteristics. This nuance is crucial in clinical trial analysis.
122
  When considering or reporting sample sizes, consider participants who were eligible for the study, those who were randomized, and those who completed the study.
123
  If it's unclear which one is being referred to, clarify this in your response or ask the user for clarification.
124
  3) Provide clear explanations of statistical concepts, including assumptions, potential biases, and limitations in the context of clinical trial data.
 
30
  $qResult.getText()
31
  #end
32
  #end
33
+ Generate a coherent response to the query *** $vectaraQuery *** using information and facts in the search results provided.
34
  Give a slight preference to search results that appear earlier in the list.
35
  Include statistical and numerical evidence to support and contextualize your response.
36
+ Your response should be comprehensive and include all relevant information from the search results. Do not omit any relevant information.
37
+ If multiple trials are mentioned in the search results, include all relevant trials in your response, and highlight the various trials included.
38
  Only cite relevant search results in your answer following these specific instructions: $vectaraCitationInstructions
39
+ If the search results are irrelevant to the query, respond with ***I do not have enough information to answer this question.***.
40
+ Respond always in the $vectaraLangName language, and only in that language."}
41
  ]
42
  """
43
 
 
57
  Responds to an user question about a particular result, based on the publications.
58
  """,
59
  tool_args_schema = QueryPublicationsArgs,
 
60
  reranker = "chain", rerank_k = 100,
61
  rerank_chain = [
62
  {
63
  "type": "multilingual_reranker_v1",
64
+ "cutoff": 0.1
65
  },
66
  {
67
  "type": "mmr",
68
+ "diversity_bias": 0.1,
69
+ "limit": 100
70
  }
71
  ],
72
+ n_sentences_before = 3, n_sentences_after = 3, lambda_val = 0.005,
73
+ summary_num_results = 25,
74
  vectara_summarizer = summarizer,
75
  include_citations = True,
76
+ vectara_prompt_text = prompt,
77
  save_history = True,
78
+ verbose = True
79
  )
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  tools_factory = ToolsFactory()
82
  return (
83
  tools_factory.standard_tools() +
84
+ [ask_publications]
85
  )
86
 
87
  def initialize_agent(_cfg, agent_progress_callback=None):
88
  menarini_bot_instructions = """
89
+ - You are an expert in clinical trial and statistical data analysis with extensive experience in designing, analyzing, and interpreting clinical research data.
90
+ - Your responses should be technically rigorous, data-driven, and written for an audience familiar with advanced statistical methodologies, regulatory standards,
91
+ and the nuances of clinical trial design.
92
+ - If asked about clinical trial, cover all relevant trials in your response (avoid aggregating results across trials, unless specifically asked to do so).
93
  - Call the ask_publications tool to retreive information to answer the user query.
94
+ If the initial query lacks comprehensive data, try to call ask_publications with a different or refined query until you retrieve all necessary numerical details.
95
+ You can try multiple times. You can include additional information about the context of the query (like clinical trial name) to get more relevant results.
96
+ - If you are missing information about a specific trial, or some data item, call the ask_publication tool with a specific query to retrieve the missing information.
97
+ - If ask_publications returns citations or references, include them in your response.
98
  - When responding to queries:
99
  1) Use precise statistical terminology (e.g., randomization, blinding, intention-to-treat, type I/II error, p-values, confidence intervals, Bayesian methods, etc.)
100
  and reference common methodologies or guidelines where applicable (e.g., CONSORT, FDA, EMA).
101
+ 2) Your responses must include contextual information like sample size (n) and population characteristics. This nuance is crucial in clinical trial analysis.
102
  When considering or reporting sample sizes, consider participants who were eligible for the study, those who were randomized, and those who completed the study.
103
  If it's unclear which one is being referred to, clarify this in your response or ask the user for clarification.
104
  3) Provide clear explanations of statistical concepts, including assumptions, potential biases, and limitations in the context of clinical trial data.
app.py CHANGED
@@ -1,10 +1,13 @@
1
  import streamlit as st
 
2
  from st_app import launch_bot
3
  import uuid
4
 
5
  import nest_asyncio
6
  import asyncio
7
 
 
 
8
  # Setup for HTTP API Calls to Amplitude Analytics
9
  if 'device_id' not in st.session_state:
10
  st.session_state.device_id = str(uuid.uuid4())
@@ -12,7 +15,11 @@ if 'device_id' not in st.session_state:
12
  if "feedback_key" not in st.session_state:
13
  st.session_state.feedback_key = 0
14
 
 
 
 
15
  if __name__ == "__main__":
16
  st.set_page_config(page_title="Menarini Assistant", layout="wide")
 
17
  nest_asyncio.apply()
18
- asyncio.run(launch_bot())
 
1
  import streamlit as st
2
+ import torch
3
  from st_app import launch_bot
4
  import uuid
5
 
6
  import nest_asyncio
7
  import asyncio
8
 
9
+ torch.classes.__path__ = []
10
+
11
  # Setup for HTTP API Calls to Amplitude Analytics
12
  if 'device_id' not in st.session_state:
13
  st.session_state.device_id = str(uuid.uuid4())
 
15
  if "feedback_key" not in st.session_state:
16
  st.session_state.feedback_key = 0
17
 
18
+ async def main():
19
+ await launch_bot()
20
+
21
  if __name__ == "__main__":
22
  st.set_page_config(page_title="Menarini Assistant", layout="wide")
23
+
24
  nest_asyncio.apply()
25
+ asyncio.run(main())
requirements.txt CHANGED
@@ -1,9 +1,8 @@
1
  omegaconf==2.3.0
2
  python-dotenv==1.0.1
3
- streamlit==1.41.1
4
- streamlit_pills==0.3.0
5
  streamlit_feedback==0.1.3
6
  uuid==1.30
7
  langdetect==1.0.9
8
  langcodes==3.4.0
9
- vectara-agentic==0.2.1
 
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.8
st_app.py CHANGED
@@ -1,4 +1,3 @@
1
- from PIL import Image
2
  import sys
3
  import re
4
 
 
 
1
  import sys
2
  import re
3