Dev (#1652)
* 更新上agent提示词代码 * 更新部分文档,修复了issue中提到的bge匹配超过1 的bug * 按需修改 * 解决了部分最新用户用依赖的bug,加了两个工具,移除google工具
This commit is contained in:
parent
332f8be401
commit
fc6a3b07ed
|
|
@ -168,7 +168,8 @@ docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/ch
|
|||
- [BAAI/bge-base-zh](https://huggingface.co/BAAI/bge-base-zh)
|
||||
- [BAAI/bge-large-zh](https://huggingface.co/BAAI/bge-large-zh)
|
||||
- [BAAI/bge-base-zh-v1.5](https://huggingface.co/BAAI/bge-base-zh-v1.5)
|
||||
- [BAAI/bge-large-zh-v1.5](https://huggingface.co/BAAI/bge-large-zh-v1.5)- [BAAI/bge-base-zh-v1.5](https://huggingface.co/BAAI/bge-base-zh-v1.5)
|
||||
- [BAAI/bge-large-zh-v1.5](https://huggingface.co/BAAI/bge-large-zh-v1.5)
|
||||
- [BAAI/bge-base-zh-v1.5](https://huggingface.co/BAAI/bge-base-zh-v1.5)
|
||||
- [BAAI/bge-large-zh-v1.5](https://huggingface.co/BAAI/bge-large-zh-v1.5)
|
||||
- [BAAI/bge-large-zh-noinstruct](https://huggingface.co/BAAI/bge-large-zh-noinstruct)
|
||||
- [sensenova/piccolo-base-zh](https://huggingface.co/sensenova/piccolo-base-zh)
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ from .server_config import *
|
|||
from .prompt_config import *
|
||||
|
||||
|
||||
VERSION = "v0.2.5-preview"
|
||||
VERSION = "v0.2.6-preview"
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
langchain>=0.0.302
|
||||
fschat[model_worker]==0.2.29
|
||||
fschat[model_worker]==0.2.30
|
||||
openai
|
||||
sentence_transformers
|
||||
transformers>=4.33.0
|
||||
torch>=2.0.1
|
||||
torchvision
|
||||
torchaudio
|
||||
fastapi>=0.103.1
|
||||
fastapi>=0.103.2
|
||||
nltk~=3.8.1
|
||||
uvicorn~=0.23.1
|
||||
starlette~=0.27.0
|
||||
pydantic~=1.10.11
|
||||
unstructured[all-docs]>=0.10.4
|
||||
unstructured[all-docs]>=0.10.12
|
||||
python-magic-bin; sys_platform == 'win32'
|
||||
SQLAlchemy==2.0.19
|
||||
faiss-cpu
|
||||
|
|
@ -25,7 +25,7 @@ pathlib
|
|||
pytest
|
||||
scikit-learn
|
||||
numexpr
|
||||
vllm==0.1.7; sys_platform == "linux"
|
||||
vllm>=0.2.0; sys_platform == "linux"
|
||||
# online api libs
|
||||
# zhipuai
|
||||
# dashscope>=1.10.0 # qwen
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
langchain>=0.0.302
|
||||
fschat[model_worker]==0.2.29
|
||||
fschat[model_worker]==0.2.30
|
||||
openai
|
||||
sentence_transformers
|
||||
transformers>=4.33.0
|
||||
torch >=2.0.1
|
||||
transformers>=4.33.3
|
||||
torch>=2.0.1
|
||||
torchvision
|
||||
torchaudio
|
||||
fastapi>=0.103.1
|
||||
|
|
@ -24,7 +24,8 @@ pathlib
|
|||
pytest
|
||||
scikit-learn
|
||||
numexpr
|
||||
vllm==0.1.7; sys_platform == "linux"
|
||||
|
||||
vllm>=0.2.0; sys_platform == "linux"
|
||||
|
||||
|
||||
# online api libs
|
||||
|
|
@ -32,6 +33,7 @@ vllm==0.1.7; sys_platform == "linux"
|
|||
# dashscope>=1.10.0 # qwen
|
||||
# qianfan
|
||||
# volcengine>=1.0.106 # fangzhou
|
||||
# duckduckgo-searchd #duckduckgo搜索
|
||||
|
||||
# uncomment libs if you want to use corresponding vector store
|
||||
# pymilvus==2.1.3 # requires milvus==2.1.3
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
import os
|
||||
os.environ["GOOGLE_CSE_ID"] = ""
|
||||
os.environ["GOOGLE_API_KEY"] = ""
|
||||
|
||||
from langchain.tools import GoogleSearchResults
|
||||
def google_search(query: str):
|
||||
tool = GoogleSearchResults()
|
||||
return tool.run(tool_input=query)
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
## 单独运行的时候需要添加
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
||||
import json
|
||||
from server.chat import search_engine_chat
|
||||
from configs import LLM_MODEL, TEMPERATURE, VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD
|
||||
|
||||
import asyncio
|
||||
|
||||
|
||||
async def search_engine_iter(query: str):
|
||||
response = await search_engine_chat(query=query,
|
||||
search_engine_name="bing",
|
||||
model_name=LLM_MODEL,
|
||||
temperature=TEMPERATURE,
|
||||
history=[],
|
||||
top_k = VECTOR_SEARCH_TOP_K,
|
||||
prompt_name = "knowledge_base_chat",
|
||||
stream=False)
|
||||
|
||||
contents = ""
|
||||
async for data in response.body_iterator: # 这里的data是一个json字符串
|
||||
data = json.loads(data)
|
||||
contents = data["answer"]
|
||||
docs = data["docs"]
|
||||
return contents
|
||||
|
||||
def search_internet(query: str):
|
||||
return asyncio.run(search_engine_iter(query))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = search_internet("大数据男女比例")
|
||||
print("答案:",result)
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
## 单独运行的时候需要添加
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
||||
from server.chat.knowledge_base_chat import knowledge_base_chat
|
||||
from configs import LLM_MODEL, TEMPERATURE, VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD
|
||||
|
||||
import asyncio
|
||||
|
||||
|
||||
async def search_knowledge_base_iter(query: str):
|
||||
response = await knowledge_base_chat(query=query,
|
||||
knowledge_base_name="tcqa",
|
||||
model_name=LLM_MODEL,
|
||||
temperature=TEMPERATURE,
|
||||
history=[],
|
||||
top_k = VECTOR_SEARCH_TOP_K,
|
||||
prompt_name = "knowledge_base_chat",
|
||||
score_threshold = SCORE_THRESHOLD,
|
||||
stream=False)
|
||||
|
||||
contents = ""
|
||||
async for data in response.body_iterator: # 这里的data是一个json字符串
|
||||
data = json.loads(data)
|
||||
contents = data["answer"]
|
||||
docs = data["docs"]
|
||||
return contents
|
||||
|
||||
def search_knowledge(query: str):
|
||||
return asyncio.run(search_knowledge_base_iter(query))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = search_knowledge("大数据男女比例")
|
||||
print("答案:",result)
|
||||
|
|
@ -7,8 +7,9 @@ from server.agent.math import calculate
|
|||
from server.agent.translator import translate
|
||||
from server.agent.weather import weathercheck
|
||||
from server.agent.shell import shell
|
||||
from server.agent.google_search import google_search
|
||||
from langchain.agents import Tool
|
||||
from server.agent.search_knowledge import search_knowledge
|
||||
from server.agent.search_internet import search_internet
|
||||
|
||||
tools = [
|
||||
Tool.from_function(
|
||||
|
|
@ -32,9 +33,15 @@ tools = [
|
|||
description="使用命令行工具输出",
|
||||
),
|
||||
Tool.from_function(
|
||||
func=google_search,
|
||||
name="谷歌搜索工具",
|
||||
description="使用谷歌搜索",
|
||||
)
|
||||
func=search_knowledge,
|
||||
name="知识库查询工具",
|
||||
description="使用西交利物浦大学大数据专业的本专业数据库来解答问题",
|
||||
),
|
||||
Tool.from_function(
|
||||
func=search_internet,
|
||||
name="互联网查询工具",
|
||||
description="访问Bing互联网来解答问题",
|
||||
),
|
||||
|
||||
]
|
||||
tool_names = [tool.name for tool in tools]
|
||||
|
|
|
|||
|
|
@ -52,4 +52,4 @@ def translate(query: str):
|
|||
llm_translate = LLMChain(llm=model, prompt=PROMPT)
|
||||
ans = llm_translate.run(query)
|
||||
|
||||
return ans
|
||||
return ans
|
||||
|
|
@ -114,7 +114,7 @@ def create_model_worker_app(log_level: str = "INFO", **kwargs) -> FastAPI:
|
|||
args.block_size = 16
|
||||
args.swap_space = 4 # GiB
|
||||
args.gpu_memory_utilization = 0.90
|
||||
args.max_num_batched_tokens = 2560
|
||||
args.max_num_batched_tokens = 16384 # 一个批次中的最大令牌(tokens)数量,这个取决于你的显卡和大模型设置,设置太大显存会不够
|
||||
args.max_num_seqs = 256
|
||||
args.disable_log_stats = False
|
||||
args.conv_template = None
|
||||
|
|
@ -123,6 +123,13 @@ def create_model_worker_app(log_level: str = "INFO", **kwargs) -> FastAPI:
|
|||
args.num_gpus = 1 # vllm worker的切分是tensor并行,这里填写显卡的数量
|
||||
args.engine_use_ray = False
|
||||
args.disable_log_requests = False
|
||||
|
||||
# 0.2.0 vllm后要加的参数
|
||||
args.max_model_len = 8192 # 模型可以处理的最大序列长度。请根据你的大模型设置,
|
||||
args.revision = None
|
||||
args.quantization = None
|
||||
args.max_log_len = None
|
||||
|
||||
if args.model_path:
|
||||
args.model = args.model_path
|
||||
if args.num_gpus > 1:
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ def dialogue_page(api: ApiRequest):
|
|||
"搜索引擎问答",
|
||||
"自定义Agent问答",
|
||||
],
|
||||
index=1,
|
||||
index=3,
|
||||
on_change=on_mode_change,
|
||||
key="dialogue_mode",
|
||||
)
|
||||
|
|
@ -101,9 +101,8 @@ def dialogue_page(api: ApiRequest):
|
|||
st.success(msg)
|
||||
st.session_state["prev_llm_model"] = llm_model
|
||||
|
||||
temperature = st.slider("Temperature:", 0.0, 1.0, TEMPERATURE, 0.01)
|
||||
temperature = st.slider("Temperature:", 0.0, 1.0, TEMPERATURE, 0.05)
|
||||
|
||||
## 部分模型可以超过10抡对话
|
||||
history_len = st.number_input("历史对话轮数:", 0, 20, HISTORY_LEN)
|
||||
|
||||
def on_kb_change():
|
||||
|
|
@ -119,10 +118,7 @@ def dialogue_page(api: ApiRequest):
|
|||
key="selected_kb",
|
||||
)
|
||||
kb_top_k = st.number_input("匹配知识条数:", 1, 20, VECTOR_SEARCH_TOP_K)
|
||||
|
||||
## Bge 模型会超过1
|
||||
score_threshold = st.slider("知识匹配分数阈值:", 0.0, 1.0, float(SCORE_THRESHOLD), 0.01)
|
||||
|
||||
# chunk_content = st.checkbox("关联上下文", False, disabled=True)
|
||||
# chunk_size = st.slider("关联长度:", 0, 500, 250, disabled=True)
|
||||
elif dialogue_mode == "搜索引擎问答":
|
||||
|
|
|
|||
Loading…
Reference in New Issue