Spaces:
Running
Running
File size: 2,749 Bytes
2319518 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import os
tools_text = """code_interpreter: Call this tool to interact with the Code Interpreter API.
What is the Code Interpreter API useful for?
Code Interpreter is used to execute Python code to deal with the following tasks:
1. Solving mathematical problems, both quantitative and qualitative
2. Doing data analysis and visualization
3. Converting files between formats
Parameters:
```py
code
```
Enclose the code within triple backticks (```) at the beginning and end of the code.
"""
REACT_PROMPT = """Answer the following questions as best you can. You have access to the following tools:
{tools_text}
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tools_name_text}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can be repeated zero or more times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {query}"""
fname_template = {
'zh': '文件{fname_str},',
'en_multi': 'Files {fname_str}. ',
'en': 'File {fname_str}. ',
}
class ReAct(object):
def __init__(self, query, lang='en', upload_file_paths=[]):
self.query = query
self.lang = lang
self.upload_file_paths = [
f'`{os.path.basename(fname)}`' for fname in upload_file_paths
]
self.fname_template = fname_template
self.react_template = REACT_PROMPT
self.prompt = ''
def build_prompt(self):
query = self._format_upload_fname() + self.query
tools_text = self._build_tools_text()
tools_name_text = self._build_tools_name_text()
planning_prompt = self.react_template.format(
query=query,
tools_text=tools_text,
tools_name_text=tools_name_text)
self.prompt = planning_prompt
return planning_prompt
def _format_upload_fname(self):
prefix = ''
if self.upload_file_paths:
fname_str = ', '.join(self.upload_file_paths)
lang_key = 'en_multi' if self.lang == 'en' and len(
self.upload_file_paths) > 1 else self.lang
fname_template = self.fname_template[lang_key]
prefix = fname_template.format(fname_str=fname_str)
return prefix
def _build_tools_text(self):
return tools_text
def _build_tools_name_text(self):
return 'code_interpreter'
def build_observation(self, observation):
return f'\nObservation: {observation}\nThought:'
def get_stop_words_list(self):
return ['Observation:', 'Observation:\n']
|