Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jinchat-server
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
aigc-pioneer
jinchat-server
Commits
2240ed1e
提交
2240ed1e
authored
4月 09, 2023
作者:
imClumsyPanda
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update requirements.txt
上级
3dc5860c
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
42 行增加
和
27 行删除
+42
-27
chatglm_llm.py
chatglm_llm.py
+34
-17
knowledge_based_chatglm.py
knowledge_based_chatglm.py
+8
-10
没有找到文件。
chatglm_llm.py
浏览文件 @
2240ed1e
...
...
@@ -16,13 +16,28 @@ def torch_gc():
torch
.
cuda
.
ipc_collect
()
tokenizer
=
AutoTokenizer
.
from_pretrained
(
"/Users/liuqian/Downloads/ChatGLM-6B/chatglm_hf_model"
,
# "THUDM/chatglm-6b",
trust_remote_code
=
True
)
model
=
(
AutoModel
.
from_pretrained
(
"/Users/liuqian/Downloads/ChatGLM-6B/chatglm_hf_model"
,
# "THUDM/chatglm-6b",
trust_remote_code
=
True
)
.
float
()
.
to
(
"mps"
)
# .half()
# .cuda()
)
class
ChatGLM
(
LLM
):
max_token
:
int
=
10000
temperature
:
float
=
0.1
top_p
=
0.9
history
=
[]
tokenizer
:
object
=
None
model
:
object
=
None
def
__init__
(
self
):
super
()
.
__init__
()
...
...
@@ -34,8 +49,8 @@ class ChatGLM(LLM):
def
_call
(
self
,
prompt
:
str
,
stop
:
Optional
[
List
[
str
]]
=
None
)
->
str
:
response
,
updated_history
=
self
.
model
.
chat
(
self
.
tokenizer
,
response
,
updated_history
=
model
.
chat
(
tokenizer
,
prompt
,
history
=
self
.
history
,
max_length
=
self
.
max_token
,
...
...
@@ -48,16 +63,17 @@ class ChatGLM(LLM):
self
.
history
=
updated_history
return
response
def
load_model
(
self
,
model_name_or_path
:
str
=
"THUDM/chatglm-6b"
):
self
.
tokenizer
=
AutoTokenizer
.
from_pretrained
(
model_name_or_path
,
trust_remote_code
=
True
)
self
.
model
=
(
AutoModel
.
from_pretrained
(
model_name_or_path
,
trust_remote_code
=
True
)
.
half
()
.
cuda
()
)
def
get_num_tokens
(
self
,
text
:
str
)
->
int
:
tokenized_text
=
tokenizer
.
tokenize
(
text
)
return
len
(
tokenized_text
)
if
__name__
==
"__main__"
:
history
=
[]
while
True
:
query
=
input
(
"Input your question 请输入问题:"
)
resp
,
history
=
model
.
chat
(
tokenizer
,
query
,
history
=
history
,
temperature
=
0.01
,
max_length
=
100000
)
print
(
resp
)
\ No newline at end of file
knowledge_based_chatglm.py
浏览文件 @
2240ed1e
from
langchain.prompts.prompt
import
PromptTemplate
from
langchain.chains
import
ChatVectorDBChain
from
langchain.chains
import
ChatVectorDBChain
,
ConversationalRetrievalChain
from
langchain.prompts.chat
import
(
ChatPromptTemplate
,
SystemMessagePromptTemplate
,
...
...
@@ -13,16 +13,13 @@ from chatglm_llm import ChatGLM
embedding_model_dict
=
{
"ernie-tiny"
:
"nghuyong/ernie-3.0-nano-zh"
,
"ernie-base"
:
"nghuyong/ernie-3.0-base-zh"
,
"text2vec"
:
"GanymedeNil/text2vec-large-chinese"
"text2vec"
:
"
/Users/liuqian/Downloads/ChatGLM-6B/chatglm_embedding"
#"
GanymedeNil/text2vec-large-chinese"
}
llm_model_dict
=
{
"chatglm-6b"
:
"THUDM/chatglm-6b"
,
"chatglm-6b-int4"
:
"THUDM/chatglm-6b-int4"
}
chatglm
=
ChatGLM
()
chatglm
.
load_model
(
model_name_or_path
=
llm_model_dict
[
"chatglm-6b"
])
def
init_knowledge_vector_store
(
filepath
):
embeddings
=
HuggingFaceEmbeddings
(
model_name
=
embedding_model_dict
[
"text2vec"
],
)
...
...
@@ -56,15 +53,16 @@ def get_knowledge_based_answer(query, vector_store, chat_history=[]):
改写后的独立、完整的问题:"""
new_question_prompt
=
PromptTemplate
.
from_template
(
condese_propmt_template
)
chatglm
.
history
=
chat_history
knowledge_chain
=
C
hatVectorDB
Chain
.
from_llm
(
knowledge_chain
=
C
onversationalRetrieval
Chain
.
from_llm
(
llm
=
chatglm
,
vectorstore
=
vector_store
,
retriever
=
vector_store
.
as_retriever
()
,
qa_prompt
=
prompt
,
condense_question_prompt
=
new_question_prompt
,
)
knowledge_chain
.
return_source_documents
=
True
knowledge_chain
.
top_k_docs_for_context
=
10
# knowledge_chain.top_k_docs_for_context = 10
knowledge_chain
.
max_tokens_limit
=
10000
result
=
knowledge_chain
({
"question"
:
query
,
"chat_history"
:
chat_history
})
return
result
,
chatglm
.
history
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论