pycoze 0.1.380__py3-none-any.whl → 0.1.382__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pycoze/bot/chat.py CHANGED
@@ -8,6 +8,8 @@ from pycoze import utils
8
8
  import tempfile
9
9
  import re
10
10
  import datetime
11
+ from pathlib import Path
12
+
11
13
 
12
14
  def eclipse_tool_result(text, threshold=100):
13
15
  pattern = r'\[Tool Result Begin\](.*?)\[Tool Result End\]'
@@ -93,7 +95,10 @@ def chat(bot_setting_file: str):
93
95
  abilities = get_abilities(bot_setting)
94
96
  continuouslyRememberToolResults = bot_setting["continuouslyRememberToolResults"]
95
97
 
96
- cwd = tempfile.mkdtemp()
98
+ if bot_setting["specifiedWorkingDirectory"] is None:
99
+ cwd = tempfile.mkdtemp()
100
+ else:
101
+ cwd = Path(bot_setting["specifiedWorkingDirectory"]).as_posix()
97
102
  system_prompt, has_any_tool = get_system_prompt(abilities, bot_setting)
98
103
  conversation_history = [
99
104
  {
pycoze/bot/chat_base.py CHANGED
@@ -37,8 +37,7 @@ def user_task_prompt(conversation_history, cwd, user_input: str, programmer_mode
37
37
  if content
38
38
  else ""
39
39
  )
40
- return f"""
41
- <task>
40
+ return f"""<task>
42
41
  {user_input}
43
42
  </task>
44
43
 
@@ -52,11 +51,14 @@ List of files under path:
52
51
 
53
52
  </environment_details>
54
53
  """
54
+
55
55
  else:
56
- return f"""
57
- <task>
56
+ return f"""<task>
58
57
  {user_input}
59
58
  </task>
59
+ <environment_details>
60
+ Current working directory: {cwd}
61
+ </environment_details>
60
62
  """
61
63
 
62
64
 
@@ -65,18 +67,6 @@ def dumps_markdown_json(data):
65
67
  return f"\n```json\n{json_str}\n```\n"
66
68
 
67
69
 
68
- def process_code_block(language: str, content: str):
69
- """
70
- 处理并清理代码块内容,返回格式化后的字符串
71
- """
72
- if language and content:
73
- # 清理代码块内容
74
- cleaned_content = "\n".join(
75
- line.strip() for line in content.split("\n") if line.strip()
76
- )
77
- return (language, cleaned_content)
78
- return ""
79
-
80
70
 
81
71
  async def stream_openai_response(conversation_history, start_new_stream):
82
72
  """
@@ -84,9 +74,8 @@ async def stream_openai_response(conversation_history, start_new_stream):
84
74
  """
85
75
  stream = None
86
76
  buffer = ""
87
- in_code_block = False
88
- code_block_language = ""
89
- code_block_content = ""
77
+ in_json_block = False
78
+ json_block_content = ""
90
79
  text_content = ""
91
80
 
92
81
  while True:
@@ -97,9 +86,8 @@ async def stream_openai_response(conversation_history, start_new_stream):
97
86
  stream = chat_stream_async(conversation_history) # 获取新的异步生成器
98
87
  start_new_stream["value"] = False # 重置标志
99
88
  buffer = ""
100
- in_code_block = False
101
- code_block_language = ""
102
- code_block_content = ""
89
+ in_json_block = False
90
+ json_block_content = ""
103
91
  text_content = ""
104
92
 
105
93
  # 使用 async for 迭代异步生成器
@@ -115,24 +103,21 @@ async def stream_openai_response(conversation_history, start_new_stream):
115
103
  # 处理 buffer 中的每一行
116
104
  while "\n" in buffer:
117
105
  line, buffer = buffer.split("\n", 1)
118
- if not in_code_block:
119
- if line.strip().startswith("```"):
106
+ if not in_json_block:
107
+ if line.strip().lower().startswith("```json"):
120
108
  if text_content:
121
109
  yield ("text", text_content.strip())
122
110
  text_content = ""
123
- in_code_block = True
124
- code_block_language = line.strip()[3:].strip()
111
+ in_json_block = True
125
112
  else:
126
113
  text_content += line + "\n"
127
114
  else:
128
- if line.strip().startswith("```"):
129
- in_code_block = False
130
- yield process_code_block(
131
- code_block_language, code_block_content
132
- )
133
- code_block_content = ""
115
+ if line.strip().lower().startswith("```") and in_json_block:
116
+ yield ("json", json_block_content.strip())
117
+ json_block_content = ""
118
+ in_json_block = False
134
119
  else:
135
- code_block_content += line + "\n"
120
+ json_block_content += line + "\n"
136
121
 
137
122
  # 如果流正常结束,退出 while 循环
138
123
  break
@@ -144,10 +129,10 @@ async def stream_openai_response(conversation_history, start_new_stream):
144
129
 
145
130
  # 处理 buffer 中剩余的内容
146
131
  if buffer:
147
- if in_code_block:
132
+ if in_json_block:
148
133
  buffer = buffer.split("```")[0]
149
- code_block_content += buffer + "\n"
150
- yield process_code_block(code_block_language, code_block_content)
134
+ json_block_content += buffer
135
+ yield ("json", json_block_content.strip())
151
136
  else:
152
137
  text_content += buffer
153
138
  if text_content:
@@ -189,7 +174,7 @@ async def handle_user_inputs(
189
174
  ):
190
175
  if len(response) == 2:
191
176
  if (
192
- response[0] != "json"
177
+ response[0] == "text"
193
178
  and response[1].strip() != ""
194
179
  or (response[0] == "json" and not has_any_tool)
195
180
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycoze
3
- Version: 0.1.380
3
+ Version: 0.1.382
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -12,8 +12,8 @@ pycoze/api/lib/view.py,sha256=_PIpTfeuTPPlMDKshMGsqFQYMq7ZiO4Hg5XwHwDoU60,7357
12
12
  pycoze/api/lib/web.py,sha256=GWgtiTJOolKOX2drXcwuyqTcbo5FQVxa1NuBGcNyjyc,223
13
13
  pycoze/api/lib/window.py,sha256=bTkQCzQZ7i3pYXB70bUSTBNJ9C4TW_X3yMae1VkquGk,1944
14
14
  pycoze/bot/__init__.py,sha256=rL3Q-ycczRpSFfKn84fg3QBl5k22WpyeIU5qOEjEby8,79
15
- pycoze/bot/chat.py,sha256=cxaF20QCAoca54lo472o1K9VRXu5f3uU-bH7VdSumnU,5635
16
- pycoze/bot/chat_base.py,sha256=klJdK5W8pIeBB2zuIRXCgonKVKzExGfCP2IiSJsN4Bo,10231
15
+ pycoze/bot/chat.py,sha256=VoYFhO-vYFeQIPbnUI6cRgVQTCihUcDLDK9HK2_VstI,5804
16
+ pycoze/bot/chat_base.py,sha256=abCJvqEtShQpARefTfRTIrKCohN78nWztb2MvX3R-tc,9714
17
17
  pycoze/bot/lib.py,sha256=smigeWuhl8esHE-Y5l_9bpjJkEJ5OqrxTyPcO8JIubM,7224
18
18
  pycoze/bot/message.py,sha256=udnIi-h4QgGzkbr_5VcAsVGjoLp9wXJSfBCeuOz7_Bk,802
19
19
  pycoze/bot/prompt.md,sha256=OBxwUY6yiwEmusnUHhwixWYByrWX3BpwfxG_Gfas8UM,15783
@@ -33,8 +33,8 @@ pycoze/utils/arg.py,sha256=jop1tBfe5hYkHW1NSpCeaZBEznkgguBscj_7M2dWfrs,503
33
33
  pycoze/utils/env.py,sha256=5pWlXfM1F5ZU9hhv1rHlDEanjEW5wf0nbyez9bNRqqA,559
34
34
  pycoze/utils/socket.py,sha256=bZbFFRH4mfThzRqt55BAAGQ6eICx_ja4x8UGGrUdAm8,2428
35
35
  pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
36
- pycoze-0.1.380.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
37
- pycoze-0.1.380.dist-info/METADATA,sha256=hHflUHg1pkvCCyNUwikenE0w9SnOHrauos6yFT4osGE,854
38
- pycoze-0.1.380.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
39
- pycoze-0.1.380.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
40
- pycoze-0.1.380.dist-info/RECORD,,
36
+ pycoze-0.1.382.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
37
+ pycoze-0.1.382.dist-info/METADATA,sha256=JrRAP5KhJiZflVCZhLideI9CF4blKLvYA0tqJa5OaTg,854
38
+ pycoze-0.1.382.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
39
+ pycoze-0.1.382.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
40
+ pycoze-0.1.382.dist-info/RECORD,,