mirror of
https://github.com/tcsenpai/agenticSeek.git
synced 2025-06-06 11:05:26 +00:00
Feat : better interpreter loading of code block
This commit is contained in:
parent
298c26a63f
commit
43ba140a21
2
main.py
2
main.py
@ -20,7 +20,7 @@ def handleInterrupt(signum, frame):
|
|||||||
def main():
|
def main():
|
||||||
signal.signal(signal.SIGINT, handler=handleInterrupt)
|
signal.signal(signal.SIGINT, handler=handleInterrupt)
|
||||||
|
|
||||||
#local_provider = Provider("ollama", "deepseek-r1:14b", None)
|
#local_provider = Provider("ollama", "deepseek-r1:14b", "127.0.0.1:5000")
|
||||||
server_provider = Provider(provider_name="server",
|
server_provider = Provider(provider_name="server",
|
||||||
model="deepseek-r1:14b",
|
model="deepseek-r1:14b",
|
||||||
server_address="192.168.1.100:5000")
|
server_address="192.168.1.100:5000")
|
||||||
|
@ -3,6 +3,7 @@ openai==1.61.1
|
|||||||
colorama==0.4.6
|
colorama==0.4.6
|
||||||
python-dotenv==1.0.0
|
python-dotenv==1.0.0
|
||||||
playsound==1.3.0
|
playsound==1.3.0
|
||||||
|
soundfile==0.13.1
|
||||||
transformers==4.48.3
|
transformers==4.48.3
|
||||||
torch==2.5.1
|
torch==2.5.1
|
||||||
ollama==0.4.7
|
ollama==0.4.7
|
||||||
|
@ -101,7 +101,6 @@ class Agent():
|
|||||||
feedback = ""
|
feedback = ""
|
||||||
blocks = None
|
blocks = None
|
||||||
|
|
||||||
print("Loading tools: ", self._tools.items())
|
|
||||||
for name, tool in self._tools.items():
|
for name, tool in self._tools.items():
|
||||||
feedback = ""
|
feedback = ""
|
||||||
blocks = tool.load_exec_block(answer)
|
blocks = tool.load_exec_block(answer)
|
||||||
|
@ -15,8 +15,7 @@ class Provider:
|
|||||||
self.available_providers = {
|
self.available_providers = {
|
||||||
"ollama": self.ollama_fn,
|
"ollama": self.ollama_fn,
|
||||||
"server": self.server_fn,
|
"server": self.server_fn,
|
||||||
"test": self.test_fn
|
"test": self.test_fn,
|
||||||
|
|
||||||
}
|
}
|
||||||
if self.server != "":
|
if self.server != "":
|
||||||
print("Provider initialized at ", self.server)
|
print("Provider initialized at ", self.server)
|
||||||
@ -99,7 +98,7 @@ class Provider:
|
|||||||
thought += chunk['message']['content']
|
thought += chunk['message']['content']
|
||||||
except ollama.ResponseError as e:
|
except ollama.ResponseError as e:
|
||||||
if e.status_code == 404:
|
if e.status_code == 404:
|
||||||
ollama.pull(self._model)
|
ollama.pull(self.model)
|
||||||
if "refused" in str(e):
|
if "refused" in str(e):
|
||||||
raise Exception("Ollama connection failed. is the server running ?")
|
raise Exception("Ollama connection failed. is the server running ?")
|
||||||
raise e
|
raise e
|
||||||
|
@ -7,16 +7,22 @@ import re
|
|||||||
class Speech():
|
class Speech():
|
||||||
def __init__(self, language = "english") -> None:
|
def __init__(self, language = "english") -> None:
|
||||||
self.lang_map = {
|
self.lang_map = {
|
||||||
"english": 'a', # 🇺🇸 'a' => American English
|
"english": 'a',
|
||||||
"chinese": 'z', # 🇯🇵 'j' => Japanese: pip install misaki[ja]
|
"chinese": 'z',
|
||||||
"japanese": 'j' # # 🇨🇳 'z' => Mandarin Chinese: pip install misaki[zh]
|
"french": 'f'
|
||||||
|
}
|
||||||
|
self.voice_map = {
|
||||||
|
"english": ['af_alloy', 'af_aoede', 'af_bella', 'af_heart', 'af_jessica', 'af_kore', 'af_nicole', 'af_nova', 'af_river', 'af_sarah', 'af_sky', 'am_adam', 'am_echo', 'am_eric', 'am_fenrir', 'am_liam', 'am_michael', 'am_onyx', 'am_puck'],
|
||||||
|
"chinese": ['zf_xiaobei', 'zf_xiaoni', 'zf_xiaoxiao', 'zf_xiaoyi', 'zm_yunjian', 'zm_yunxi', 'zm_yunxia', 'zm_yunyang'],
|
||||||
|
"french": ['ff_siwis']
|
||||||
}
|
}
|
||||||
self.pipeline = KPipeline(lang_code=self.lang_map[language])
|
self.pipeline = KPipeline(lang_code=self.lang_map[language])
|
||||||
|
self.voice = self.voice_map[language][0]
|
||||||
|
|
||||||
def speak(self, sentence):
|
def speak(self, sentence):
|
||||||
sentence = self.clean_sentence(sentence)
|
sentence = self.clean_sentence(sentence)
|
||||||
generator = self.pipeline(
|
generator = self.pipeline(
|
||||||
sentence, voice='af_heart', # <= change voice here
|
sentence, voice=self.voice,
|
||||||
speed=1, split_pattern=r'\n+'
|
speed=1, split_pattern=r'\n+'
|
||||||
)
|
)
|
||||||
for i, (gs, ps, audio) in enumerate(generator):
|
for i, (gs, ps, audio) in enumerate(generator):
|
||||||
|
@ -70,25 +70,44 @@ class Tools():
|
|||||||
return text
|
return text
|
||||||
return text[:start_idx] + text[end_idx:]
|
return text[:start_idx] + text[end_idx:]
|
||||||
|
|
||||||
def load_exec_block(self, generation:str) -> str:
|
def load_exec_block(self, generation: str) -> str:
|
||||||
"""
|
"""
|
||||||
Extract the code/query blocks from the answer text.
|
Extract the code/query blocks from the answer text, removing consistent leading whitespace.
|
||||||
"""
|
"""
|
||||||
assert self.tag != "undefined", "Tag not defined"
|
assert self.tag != "undefined", "Tag not defined"
|
||||||
start_tag = f'```{self.tag}'
|
start_tag = f'```{self.tag}'
|
||||||
end_tag = '```'
|
end_tag = '```'
|
||||||
code_blocks = []
|
code_blocks = []
|
||||||
start_index = 0
|
start_index = 0
|
||||||
|
|
||||||
if start_tag not in generation:
|
if start_tag not in generation:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
start_pos = generation.find(start_tag, start_index)
|
start_pos = generation.find(start_tag, start_index)
|
||||||
if start_pos == -1:
|
if start_pos == -1:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
line_start = generation.rfind('\n', 0, start_pos) + 1
|
||||||
|
if line_start == 0:
|
||||||
|
line_start = 0
|
||||||
|
leading_whitespace = generation[line_start:start_pos]
|
||||||
|
|
||||||
end_pos = generation.find(end_tag, start_pos + len(start_tag))
|
end_pos = generation.find(end_tag, start_pos + len(start_tag))
|
||||||
if end_pos == -1:
|
if end_pos == -1:
|
||||||
break
|
break
|
||||||
code_blocks.append(generation[start_pos + len(start_tag):end_pos])
|
content = generation[start_pos + len(start_tag):end_pos]
|
||||||
|
lines = content.split('\n')
|
||||||
|
if leading_whitespace:
|
||||||
|
processed_lines = []
|
||||||
|
for line in lines:
|
||||||
|
if line.startswith(leading_whitespace):
|
||||||
|
processed_lines.append(line[len(leading_whitespace):])
|
||||||
|
else:
|
||||||
|
processed_lines.append(line)
|
||||||
|
content = '\n'.join(processed_lines)
|
||||||
|
|
||||||
|
code_blocks.append(content)
|
||||||
start_index = end_pos + len(end_tag)
|
start_index = end_pos + len(end_tag)
|
||||||
|
|
||||||
return code_blocks
|
return code_blocks
|
Loading…
x
Reference in New Issue
Block a user