diff --git a/README.md b/README.md
index b45f1716..f319a86e 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ $ python startup.py -a
[](https://t.me/+RjliQ3jnJ1YyN2E9)
### 项目交流群
-
+
🎉 Langchain-Chatchat 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。
diff --git a/configs/model_config.py.example b/configs/model_config.py.example
index 25f41bb4..af8f35ae 100644
--- a/configs/model_config.py.example
+++ b/configs/model_config.py.example
@@ -81,7 +81,7 @@ ONLINE_LLM_MODEL = {
# 火山方舟 API,文档参考 https://www.volcengine.com/docs/82379
"fangzhou-api": {
- "version": "chatglm-6b-model",
+ "version": "", # 对应火山方舟的 endpoint_id
"version_url": "",
"api_key": "",
"secret_key": "",
diff --git a/img/qr_code_105.jpg b/img/qr_code_105.jpg
new file mode 100644
index 00000000..b80c4f18
Binary files /dev/null and b/img/qr_code_105.jpg differ
diff --git a/requirements.txt b/requirements.txt
index f5d0212c..0fdafc66 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -43,7 +43,7 @@ llama-index==0.9.35
# beautifulsoup4==4.12.2
# pysrt==1.1.2
# dashscope==1.13.6 # qwen
-# volcengine==1.0.119 # fangzhou
+# volcengine==1.0.134 # fangzhou
# uncomment libs if you want to use corresponding vector store
# pymilvus==2.3.6
# psycopg2==2.9.9
diff --git a/requirements_api.txt b/requirements_api.txt
index fbb00357..e8962e00 100644
--- a/requirements_api.txt
+++ b/requirements_api.txt
@@ -50,7 +50,7 @@ pyjwt==2.8.0
# duckduckgo-search~=3.9.9
# metaphor-python~=0.1.23
-# volcengine>=1.0.119
+# volcengine>=1.0.134
# pymilvus==2.3.6
# psycopg2==2.9.9
# pgvector>=0.2.4
diff --git a/requirements_lite.txt b/requirements_lite.txt
index dc420c62..21c869e2 100644
--- a/requirements_lite.txt
+++ b/requirements_lite.txt
@@ -30,7 +30,7 @@ youtube-search~=2.1.2
duckduckgo-search~=3.9.9
metaphor-python~=0.1.23
watchdog~=3.0.0
-# volcengine>=1.0.119
+# volcengine>=1.0.134
# pymilvus>=2.3.4
# psycopg2==2.9.9
# pgvector>=0.2.4
diff --git a/server/model_workers/fangzhou.py b/server/model_workers/fangzhou.py
index fdb50a1c..cd9278d5 100644
--- a/server/model_workers/fangzhou.py
+++ b/server/model_workers/fangzhou.py
@@ -24,9 +24,8 @@ class FangZhouWorker(ApiModelWorker):
kwargs.setdefault("context_len", 16384)
super().__init__(**kwargs)
self.version = version
-
def do_chat(self, params: ApiChatParams) -> Dict:
- from volcengine.maas import MaasService
+ from volcengine.maas.v2 import MaasService
params.load_config(self.model_names[0])
maas = MaasService('maas-api.ml-platform-cn-beijing.volces.com', 'cn-beijing')
@@ -35,9 +34,6 @@ class FangZhouWorker(ApiModelWorker):
# document: "https://www.volcengine.com/docs/82379/1099475"
req = {
- "model": {
- "name": params.version,
- },
"parameters": {
# 这里的参数仅为示例,具体可用的参数请参考具体模型的 API 说明
"max_new_tokens": params.max_tokens,
@@ -49,24 +45,24 @@ class FangZhouWorker(ApiModelWorker):
text = ""
if log_verbose:
self.logger.info(f'{self.__class__.__name__}:maas: {maas}')
- for resp in maas.stream_chat(req):
- if error := resp.error:
- if error.code_n > 0:
- data = {
- "error_code": error.code_n,
- "text": error.message,
- "error": {
- "message": error.message,
- "type": "invalid_request_error",
- "param": None,
- "code": None,
- }
+ for resp in maas.stream_chat(params.version, unicode_escape_data(req)):
+ error = resp.error
+ if error and error.code_n > 0:
+ data = {
+ "error_code": error.code_n,
+ "text": error.message,
+ "error": {
+ "message": error.message,
+ "type": "invalid_request_error",
+ "param": None,
+ "code": None,
}
- self.logger.error(f"请求方舟 API 时发生错误:{data}")
- yield data
- elif chunk := resp.choice.message.content:
- text += chunk
- yield {"error_code": 0, "text": text}
+ }
+ self.logger.error(f"请求方舟 API 时发生错误:{data}")
+ yield data
+ elif chunk := resp.choices and resp.choices[0].message.content:
+ text += chunk
+ yield {"error_code": 0, "text": text}
else:
data = {
"error_code": 500,
@@ -91,6 +87,16 @@ class FangZhouWorker(ApiModelWorker):
)
+def unicode_escape_data(data):
+ if isinstance(data, str):
+ return data.encode('unicode_escape').decode('ascii')
+ elif isinstance(data, dict):
+ return {key: unicode_escape_data(value) for key, value in data.items()}
+ elif isinstance(data, list):
+ return [unicode_escape_data(item) for item in data]
+ else:
+ return data
+
if __name__ == "__main__":
import uvicorn
from server.utils import MakeFastAPIOffline
@@ -102,4 +108,4 @@ if __name__ == "__main__":
)
sys.modules["fastchat.serve.model_worker"].worker = worker
MakeFastAPIOffline(app)
- uvicorn.run(app, port=21005)
+ uvicorn.run(app, port=21005)
\ No newline at end of file