Spaces:
Running
Running
change claude model name to stack-claude
Browse files- config.py +6 -6
- request_llm/README.md +25 -0
- request_llm/bridge_all.py +15 -14
- request_llm/bridge_newbing.py +1 -1
- request_llm/{bridge_claude.py → bridge_stackclaude.py} +5 -7
config.py
CHANGED
@@ -44,9 +44,10 @@ WEB_PORT = -1
|
|
44 |
# 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制
|
45 |
MAX_RETRY = 2
|
46 |
|
47 |
-
#
|
48 |
LLM_MODEL = "gpt-3.5-turbo" # 可选 ↓↓↓
|
49 |
-
AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "api2d-gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "chatglm", "moss", "newbing", "claude"]
|
|
|
50 |
|
51 |
# 本地LLM模型如ChatGLM的执行方式 CPU/GPU
|
52 |
LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda"
|
@@ -76,7 +77,6 @@ NEWBING_COOKIES = """
|
|
76 |
your bing cookies here
|
77 |
"""
|
78 |
|
79 |
-
#
|
80 |
-
|
81 |
-
|
82 |
-
SLACK_USER_TOKEN = ''
|
|
|
44 |
# 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制
|
45 |
MAX_RETRY = 2
|
46 |
|
47 |
+
# 模型选择是
|
48 |
LLM_MODEL = "gpt-3.5-turbo" # 可选 ↓↓↓
|
49 |
+
AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "api2d-gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "chatglm", "moss", "newbing", "stack-claude"]
|
50 |
+
# P.S. 其他可用的模型还包括 ["jittorllms_rwkv", "jittorllms_pangualpha", "jittorllms_llama"]
|
51 |
|
52 |
# 本地LLM模型如ChatGLM的执行方式 CPU/GPU
|
53 |
LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda"
|
|
|
77 |
your bing cookies here
|
78 |
"""
|
79 |
|
80 |
+
# Slack Claude bot, 使用教程详情见 request_llm/README.md
|
81 |
+
SLACK_CLAUDE_BOT_ID = ''
|
82 |
+
SLACK_CLAUDE_USER_TOKEN = ''
|
|
request_llm/README.md
CHANGED
@@ -13,6 +13,31 @@ LLM_MODEL = "chatglm"
|
|
13 |
`python main.py`
|
14 |
```
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
---
|
18 |
## Text-Generation-UI (TGUI,调试中,暂不可用)
|
|
|
13 |
`python main.py`
|
14 |
```
|
15 |
|
16 |
+
## Claude-Stack
|
17 |
+
|
18 |
+
- 请参考此教程获取 https://zhuanlan.zhihu.com/p/627485689
|
19 |
+
- 1、SLACK_CLAUDE_BOT_ID
|
20 |
+
- 2、SLACK_CLAUDE_USER_TOKEN
|
21 |
+
|
22 |
+
- 把token加入config.py
|
23 |
+
|
24 |
+
## Newbing
|
25 |
+
|
26 |
+
- 使用cookie editor获取cookie(json)
|
27 |
+
- 把cookie(json)加入config.py (NEWBING_COOKIES)
|
28 |
+
|
29 |
+
## Moss
|
30 |
+
- 使用docker-compose
|
31 |
+
|
32 |
+
## RWKV
|
33 |
+
- 使用docker-compose
|
34 |
+
|
35 |
+
## LLAMA
|
36 |
+
- 使用docker-compose
|
37 |
+
|
38 |
+
## 盘古
|
39 |
+
- 使用docker-compose
|
40 |
+
|
41 |
|
42 |
---
|
43 |
## Text-Generation-UI (TGUI,调试中,暂不可用)
|
request_llm/bridge_all.py
CHANGED
@@ -22,9 +22,6 @@ from .bridge_chatglm import predict as chatglm_ui
|
|
22 |
from .bridge_newbing import predict_no_ui_long_connection as newbing_noui
|
23 |
from .bridge_newbing import predict as newbing_ui
|
24 |
|
25 |
-
from .bridge_claude import predict_no_ui_long_connection as claude_noui
|
26 |
-
from .bridge_claude import predict as claude_ui
|
27 |
-
|
28 |
# from .bridge_tgui import predict_no_ui_long_connection as tgui_noui
|
29 |
# from .bridge_tgui import predict as tgui_ui
|
30 |
|
@@ -133,15 +130,7 @@ model_info = {
|
|
133 |
"tokenizer": tokenizer_gpt35,
|
134 |
"token_cnt": get_token_num_gpt35,
|
135 |
},
|
136 |
-
|
137 |
-
"claude": {
|
138 |
-
"fn_with_ui": claude_ui,
|
139 |
-
"fn_without_ui": claude_noui,
|
140 |
-
"endpoint": None,
|
141 |
-
"max_token": 4096,
|
142 |
-
"tokenizer": tokenizer_gpt35,
|
143 |
-
"token_cnt": get_token_num_gpt35,
|
144 |
-
},
|
145 |
}
|
146 |
|
147 |
|
@@ -198,8 +187,20 @@ if "moss" in AVAIL_LLM_MODELS:
|
|
198 |
"token_cnt": get_token_num_gpt35,
|
199 |
},
|
200 |
})
|
201 |
-
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
|
204 |
|
205 |
def LLM_CATCH_EXCEPTION(f):
|
|
|
22 |
from .bridge_newbing import predict_no_ui_long_connection as newbing_noui
|
23 |
from .bridge_newbing import predict as newbing_ui
|
24 |
|
|
|
|
|
|
|
25 |
# from .bridge_tgui import predict_no_ui_long_connection as tgui_noui
|
26 |
# from .bridge_tgui import predict as tgui_ui
|
27 |
|
|
|
130 |
"tokenizer": tokenizer_gpt35,
|
131 |
"token_cnt": get_token_num_gpt35,
|
132 |
},
|
133 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
|
136 |
|
|
|
187 |
"token_cnt": get_token_num_gpt35,
|
188 |
},
|
189 |
})
|
190 |
+
if "stack-claude" in AVAIL_LLM_MODELS:
|
191 |
+
from .bridge_stackclaude import predict_no_ui_long_connection as claude_noui
|
192 |
+
from .bridge_stackclaude import predict as claude_ui
|
193 |
+
# claude
|
194 |
+
model_info.update({
|
195 |
+
"stack-claude": {
|
196 |
+
"fn_with_ui": claude_ui,
|
197 |
+
"fn_without_ui": claude_noui,
|
198 |
+
"endpoint": None,
|
199 |
+
"max_token": 8192,
|
200 |
+
"tokenizer": tokenizer_gpt35,
|
201 |
+
"token_cnt": get_token_num_gpt35,
|
202 |
+
}
|
203 |
+
})
|
204 |
|
205 |
|
206 |
def LLM_CATCH_EXCEPTION(f):
|
request_llm/bridge_newbing.py
CHANGED
@@ -153,7 +153,7 @@ class NewBingHandle(Process):
|
|
153 |
# 进入任务等待状态
|
154 |
asyncio.run(self.async_run())
|
155 |
except Exception:
|
156 |
-
tb_str = '```\n' + trimmed_format_exc() + '
|
157 |
self.child.send(f'[Local Message] Newbing失败 {tb_str}.')
|
158 |
self.child.send('[Fail]')
|
159 |
self.child.send('[Finish]')
|
|
|
153 |
# 进入任务等待状态
|
154 |
asyncio.run(self.async_run())
|
155 |
except Exception:
|
156 |
+
tb_str = '\n```\n' + trimmed_format_exc() + '\n```\n'
|
157 |
self.child.send(f'[Local Message] Newbing失败 {tb_str}.')
|
158 |
self.child.send('[Fail]')
|
159 |
self.child.send('[Finish]')
|
request_llm/{bridge_claude.py → bridge_stackclaude.py}
RENAMED
@@ -9,8 +9,6 @@ from toolbox import get_conf
|
|
9 |
from slack_sdk.errors import SlackApiError
|
10 |
from slack_sdk.web.async_client import AsyncWebClient
|
11 |
import asyncio
|
12 |
-
import sys
|
13 |
-
sys.path.append('..')
|
14 |
|
15 |
|
16 |
"""
|
@@ -38,7 +36,7 @@ class SlackClient(AsyncWebClient):
|
|
38 |
CHANNEL_ID = None
|
39 |
|
40 |
async def open_channel(self):
|
41 |
-
response = await self.conversations_open(users=get_conf('
|
42 |
self.CHANNEL_ID = response["channel"]["id"]
|
43 |
|
44 |
async def chat(self, text):
|
@@ -53,7 +51,7 @@ class SlackClient(AsyncWebClient):
|
|
53 |
# TODO:暂时不支持历史消息,因为在同一个频道里存在多人使用时历史消息渗透问题
|
54 |
resp = await self.conversations_history(channel=self.CHANNEL_ID, oldest=self.LAST_TS, limit=1)
|
55 |
msg = [msg for msg in resp["messages"]
|
56 |
-
if msg.get("user") == get_conf('
|
57 |
return msg
|
58 |
except (SlackApiError, KeyError) as e:
|
59 |
raise RuntimeError(f"获取Slack消息失败。")
|
@@ -174,8 +172,8 @@ class ClaudeHandle(Process):
|
|
174 |
self.proxies_https = proxies['https']
|
175 |
|
176 |
try:
|
177 |
-
|
178 |
-
self.claude_model = SlackClient(token=
|
179 |
print('Claude组件初始化成功。')
|
180 |
except:
|
181 |
self.success = False
|
@@ -190,7 +188,7 @@ class ClaudeHandle(Process):
|
|
190 |
# 进入任务等待状态
|
191 |
asyncio.run(self.async_run())
|
192 |
except Exception:
|
193 |
-
tb_str = '```\n' + trimmed_format_exc() + '
|
194 |
self.child.send(f'[Local Message] Claude失败 {tb_str}.')
|
195 |
self.child.send('[Fail]')
|
196 |
self.child.send('[Finish]')
|
|
|
9 |
from slack_sdk.errors import SlackApiError
|
10 |
from slack_sdk.web.async_client import AsyncWebClient
|
11 |
import asyncio
|
|
|
|
|
12 |
|
13 |
|
14 |
"""
|
|
|
36 |
CHANNEL_ID = None
|
37 |
|
38 |
async def open_channel(self):
|
39 |
+
response = await self.conversations_open(users=get_conf('SLACK_CLAUDE_BOT_ID')[0])
|
40 |
self.CHANNEL_ID = response["channel"]["id"]
|
41 |
|
42 |
async def chat(self, text):
|
|
|
51 |
# TODO:暂时不支持历史消息,因为在同一个频道里存在多人使用时历史消息渗透问题
|
52 |
resp = await self.conversations_history(channel=self.CHANNEL_ID, oldest=self.LAST_TS, limit=1)
|
53 |
msg = [msg for msg in resp["messages"]
|
54 |
+
if msg.get("user") == get_conf('SLACK_CLAUDE_BOT_ID')[0]]
|
55 |
return msg
|
56 |
except (SlackApiError, KeyError) as e:
|
57 |
raise RuntimeError(f"获取Slack消息失败。")
|
|
|
172 |
self.proxies_https = proxies['https']
|
173 |
|
174 |
try:
|
175 |
+
SLACK_CLAUDE_USER_TOKEN, = get_conf('SLACK_CLAUDE_USER_TOKEN')
|
176 |
+
self.claude_model = SlackClient(token=SLACK_CLAUDE_USER_TOKEN, proxy=self.proxies_https)
|
177 |
print('Claude组件初始化成功。')
|
178 |
except:
|
179 |
self.success = False
|
|
|
188 |
# 进入任务等待状态
|
189 |
asyncio.run(self.async_run())
|
190 |
except Exception:
|
191 |
+
tb_str = '\n```\n' + trimmed_format_exc() + '\n```\n'
|
192 |
self.child.send(f'[Local Message] Claude失败 {tb_str}.')
|
193 |
self.child.send('[Fail]')
|
194 |
self.child.send('[Finish]')
|