- .env +9 -0
- qa_chain/Chat_QA_chain_self.py +162 -0
- qa_chain/QA_chain_self.py +176 -0
- qa_chain/__pycache__/Chat_QA_chain_self.cpython-310.pyc +0 -0
- qa_chain/__pycache__/Chat_QA_chain_self.cpython-311.pyc +0 -0
- qa_chain/__pycache__/Chat_QA_chain_self.cpython-39.pyc +0 -0
- qa_chain/__pycache__/QA_chain_self.cpython-310.pyc +0 -0
- qa_chain/__pycache__/QA_chain_self.cpython-311.pyc +0 -0
- qa_chain/__pycache__/QA_chain_self.cpython-39.pyc +0 -0
- qa_chain/__pycache__/get_vectordb.cpython-310.pyc +0 -0
- qa_chain/__pycache__/get_vectordb.cpython-311.pyc +0 -0
- qa_chain/__pycache__/get_vectordb.cpython-39.pyc +0 -0
- qa_chain/__pycache__/model_to_llm.cpython-310.pyc +0 -0
- qa_chain/__pycache__/model_to_llm.cpython-311.pyc +0 -0
- qa_chain/__pycache__/model_to_llm.cpython-39.pyc +0 -0
- qa_chain/get_vectordb.py +39 -0
- qa_chain/model_to_llm.py +48 -0
- qa_chain/test.ipynb +306 -0
- qa_chain/test_chat.py +49 -0
- serve/__pycache__/api.cpython-310.pyc +0 -0
- serve/__pycache__/api.cpython-39.pyc +0 -0
- serve/__pycache__/test.cpython-39.pyc +0 -0
- serve/api.py +88 -0
- serve/run_api.sh +2 -0
- serve/run_gradio.py +251 -0
- serve/sanguo_duel.py +85 -0
- serve/test.ipynb +63 -0
- split_docs/split_documents.txt +2006 -0
- vector_db/chroma/chroma-collections.parquet +3 -0
- vector_db/chroma/chroma-embeddings.parquet +3 -0
- vector_db/chroma/index/id_to_uuid_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl +3 -0
- vector_db/chroma/index/index_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.bin +3 -0
- vector_db/chroma/index/index_metadata_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl +3 -0
- vector_db/chroma/index/uuid_to_id_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl +3 -0
- vector_db/chroma_sanguo/chroma-collections.parquet +3 -0
- vector_db/chroma_sanguo/chroma-embeddings.parquet +3 -0
- vector_db/chroma_sanguo/index/id_to_uuid_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl +3 -0
- vector_db/chroma_sanguo/index/index_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.bin +3 -0
- vector_db/chroma_sanguo/index/index_metadata_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl +3 -0
- vector_db/chroma_sanguo/index/uuid_to_id_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl +3 -0
.env
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
OPENAI_API_KEY = ""
|
2 |
+
wenxin_api_key = ""
|
3 |
+
wenxin_secret_key = ""
|
4 |
+
spark_appid = "e066d42a"
|
5 |
+
spark_api_secret = "YTJmMzBmMmM4YmFkZTQ4ODQ5ODBiYzhj"
|
6 |
+
spark_api_key = "d2586b82c18d2e5eab65e34a87a14362"
|
7 |
+
ZHIPUAI_API_KEY = "09250b288894428890562600b2035ecb.R1fCWi6aQIsTshNH"
|
8 |
+
TOKEN=""
|
9 |
+
ali_api_key="sk-ccfcd3767a9646828c4943e88c07dbf4"
|
qa_chain/Chat_QA_chain_self.py
ADDED
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain.prompts import PromptTemplate
|
2 |
+
from langchain.chains import RetrievalQA
|
3 |
+
from langchain.vectorstores import Chroma
|
4 |
+
from langchain.chains import ConversationalRetrievalChain
|
5 |
+
from langchain.memory import ConversationBufferMemory
|
6 |
+
from langchain.chat_models import ChatOpenAI
|
7 |
+
import sys
|
8 |
+
import os
|
9 |
+
|
10 |
+
# 添加当前目录到 Python 路径
|
11 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
12 |
+
if current_dir not in sys.path:
|
13 |
+
sys.path.append(current_dir)
|
14 |
+
|
15 |
+
from model_to_llm import model_to_llm
|
16 |
+
from get_vectordb import get_vectordb
|
17 |
+
import re
|
18 |
+
|
19 |
+
class Chat_QA_chain_self:
|
20 |
+
""""
|
21 |
+
带历史记录的问答链
|
22 |
+
- model:调用的模型名称
|
23 |
+
- temperature:温度系数,控制生成的随机性
|
24 |
+
- top_k:返回检索的前k个相似文档
|
25 |
+
- chat_history:历史记录,输入一个列表,默认是一个空列表
|
26 |
+
- history_len:控制保留的最近 history_len 次对话
|
27 |
+
- file_path:建库文件所在路径
|
28 |
+
- persist_path:向量数据库持久化路径
|
29 |
+
- appid:星火
|
30 |
+
- api_key:星火、百度文心、OpenAI、智谱都需要传递的参数
|
31 |
+
- Spark_api_secret:星火秘钥
|
32 |
+
- Wenxin_secret_key:文心秘钥
|
33 |
+
- embeddings:使用的embedding模型
|
34 |
+
- embedding_key:使用的embedding模型的秘钥(智谱或者OpenAI)
|
35 |
+
"""
|
36 |
+
def __init__(self,model:str, temperature:float=0.0, top_k:int=4, chat_history:list=[], file_path:str=None, persist_path:str=None, appid:str=None, api_key:str=None, Spark_api_secret:str=None,Wenxin_secret_key:str=None, embedding = "openai",embedding_key:str=None):
|
37 |
+
print("开始初始化 Chat_QA_chain_self...")
|
38 |
+
self.model = model
|
39 |
+
self.temperature = temperature
|
40 |
+
self.top_k = top_k
|
41 |
+
self.chat_history = chat_history
|
42 |
+
self.file_path = file_path
|
43 |
+
self.persist_path = persist_path
|
44 |
+
self.appid = appid
|
45 |
+
self.api_key = api_key
|
46 |
+
self.Spark_api_secret = Spark_api_secret
|
47 |
+
self.Wenxin_secret_key = Wenxin_secret_key
|
48 |
+
self.embedding = embedding
|
49 |
+
self.embedding_key = embedding_key
|
50 |
+
|
51 |
+
print("正在初始化向量数据库...")
|
52 |
+
try:
|
53 |
+
self.vectordb = get_vectordb(self.file_path, self.persist_path, self.embedding,self.embedding_key)
|
54 |
+
print("向量数据库初始化完成")
|
55 |
+
except Exception as e:
|
56 |
+
print(f"向量数据库初始化失败: {str(e)}")
|
57 |
+
raise
|
58 |
+
print("Chat_QA_chain_self 初始化完成")
|
59 |
+
|
60 |
+
def clear_history(self):
|
61 |
+
"清空历史记录"
|
62 |
+
return self.chat_history.clear()
|
63 |
+
|
64 |
+
|
65 |
+
def change_history_length(self, history_len:int=None):
|
66 |
+
"""
|
67 |
+
返回指定数量的历史记录,不传参数则返回全部
|
68 |
+
"""
|
69 |
+
if history_len is None:
|
70 |
+
return self.chat_history
|
71 |
+
n = len(self.chat_history)
|
72 |
+
return self.chat_history[n-history_len:]
|
73 |
+
|
74 |
+
|
75 |
+
def answer(self, question:str=None, temperature=None, top_k=4, chat_history=None):
|
76 |
+
""""
|
77 |
+
核心方法,调用问答链
|
78 |
+
arguments:
|
79 |
+
- question:用户提问
|
80 |
+
- chat_history:对话历史记录
|
81 |
+
"""
|
82 |
+
print("Chat_QA_chain_self.answer 开始执行...")
|
83 |
+
|
84 |
+
if len(question) == 0:
|
85 |
+
return "", chat_history or self.chat_history
|
86 |
+
|
87 |
+
if temperature is None:
|
88 |
+
temperature = self.temperature
|
89 |
+
|
90 |
+
if chat_history is None:
|
91 |
+
chat_history = self.chat_history
|
92 |
+
|
93 |
+
print("正在初始化 LLM...")
|
94 |
+
llm = model_to_llm(self.model, temperature, self.appid, self.api_key, self.Spark_api_secret,self.Wenxin_secret_key)
|
95 |
+
print("LLM 初始化完成")
|
96 |
+
|
97 |
+
print("正在初始化检索器...")
|
98 |
+
retriever = self.vectordb.as_retriever(
|
99 |
+
search_type="mmr", # 改为MMR算法
|
100 |
+
search_kwargs={
|
101 |
+
'k': top_k,
|
102 |
+
'lambda_mult': 0.5 # 控制多样性
|
103 |
+
}
|
104 |
+
)
|
105 |
+
print("检索器初始化完成")
|
106 |
+
|
107 |
+
print("正在创建问答链...")
|
108 |
+
# 新增:显式配置提示词模板
|
109 |
+
from langchain.prompts import PromptTemplate
|
110 |
+
|
111 |
+
template = """基于以下历史对话和相关文档回答用户问题。如果历史对话中已包含相关信息,优先参考历史对话内容:
|
112 |
+
|
113 |
+
历史对话:
|
114 |
+
{chat_history}
|
115 |
+
|
116 |
+
相关文档:
|
117 |
+
{context}
|
118 |
+
|
119 |
+
问题:{question}
|
120 |
+
"""
|
121 |
+
QA_PROMPT = PromptTemplate(
|
122 |
+
template=template,
|
123 |
+
input_variables=["chat_history", "context", "question"]
|
124 |
+
)
|
125 |
+
|
126 |
+
qa = ConversationalRetrievalChain.from_llm(
|
127 |
+
llm=llm,
|
128 |
+
retriever=retriever,
|
129 |
+
combine_docs_chain_kwargs={"prompt": QA_PROMPT} # 应用自定义模板
|
130 |
+
)
|
131 |
+
print("问答链创建完成")
|
132 |
+
|
133 |
+
print("正在发送问题到模型...")
|
134 |
+
print("当前传递的chat_history内容:", chat_history)
|
135 |
+
# 新增:打印检索结果调试信息
|
136 |
+
docs = retriever.get_relevant_documents(question)
|
137 |
+
print(f"检索到的文档内容:{[doc.page_content[:50]+'...' for doc in docs]}") # 显示文档前50字符
|
138 |
+
result = qa({"question": question, "chat_history": chat_history})
|
139 |
+
print("收到模型回复")
|
140 |
+
answer = result['answer']
|
141 |
+
answer = re.sub(r"\\n", '<br/>', answer)
|
142 |
+
chat_history.append((question, answer))
|
143 |
+
|
144 |
+
print("Chat_QA_chain_self.answer 执行完成")
|
145 |
+
return chat_history #返回本次回答和更新后的历史记录
|
146 |
+
|
147 |
+
|
148 |
+
|
149 |
+
|
150 |
+
|
151 |
+
|
152 |
+
|
153 |
+
|
154 |
+
|
155 |
+
|
156 |
+
|
157 |
+
|
158 |
+
|
159 |
+
|
160 |
+
|
161 |
+
|
162 |
+
|
qa_chain/QA_chain_self.py
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain.prompts import PromptTemplate
|
2 |
+
from langchain.chains import RetrievalQA
|
3 |
+
from langchain.vectorstores import Chroma
|
4 |
+
import sys
|
5 |
+
import os
|
6 |
+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
7 |
+
from model_to_llm import model_to_llm
|
8 |
+
from get_vectordb import get_vectordb
|
9 |
+
import sys
|
10 |
+
import re
|
11 |
+
|
12 |
+
class QA_chain_self():
|
13 |
+
""""
|
14 |
+
不带历史记录的问答链
|
15 |
+
- model:调用的模型名称
|
16 |
+
- temperature:温度系数,控制生成的随机性
|
17 |
+
- top_k:返回检索的前k个相似文档
|
18 |
+
- file_path:建库文件所在路径
|
19 |
+
- persist_path:向量数据库持久化路径
|
20 |
+
- appid:星火需要输入
|
21 |
+
- api_key:所有模型都需要
|
22 |
+
- Spark_api_secret:星火秘钥
|
23 |
+
- Wenxin_secret_key:文心秘钥
|
24 |
+
- embeddings:使用的embedding模型
|
25 |
+
- embedding_key:使用的embedding模型的秘钥(智谱或者OpenAI)
|
26 |
+
- template:可以自定义提示模板,没有输入则使用默认的提示模板default_template_rq
|
27 |
+
"""
|
28 |
+
|
29 |
+
#基于召回结果和 query 结合起来构建的 prompt使用的默认提示模版
|
30 |
+
default_template_rq = """你是一个三国大乱斗系统的AI助手。请根据以下角色信息回答问题。
|
31 |
+
|
32 |
+
角色信息:
|
33 |
+
{context}
|
34 |
+
|
35 |
+
问题: {question}
|
36 |
+
|
37 |
+
请按照以下规则回答:
|
38 |
+
1. 如果问题是抽取角色或角色信息相关,请不要只回答角色名,而是回答以下信息:
|
39 |
+
- 抽取结果:[角色名]
|
40 |
+
- 角色特点:[简要描述]
|
41 |
+
- 属性值:[列出关键属性]
|
42 |
+
- 技能说明:[列出技能效果]
|
43 |
+
|
44 |
+
|
45 |
+
2. 如果问题是战斗规则说明相关:
|
46 |
+
请直接引用下面"回合制对战规则"部分的内容,包括:
|
47 |
+
- 回合顺序:每回合速度快的一方先出手
|
48 |
+
- 行动选择:每回合可选择普通攻击、使用技能、休息(回复1%体力和10灵力)
|
49 |
+
- 技能使用:需要支付相应消耗,无法支付则无法发动
|
50 |
+
- 伤害计算的逻辑:- 普通攻击伤害 = (攻击方攻击-防御方防御)/防御方耐力*2
|
51 |
+
- 技能附加效果(如增伤、减防、附加状态)独立计算。
|
52 |
+
- 胜负判定:体力降为0或以下即判负
|
53 |
+
|
54 |
+
3. 如果问题是对战、模拟战、战斗相关:
|
55 |
+
- 对战双方:[双方角色名]
|
56 |
+
- 行动类型:[普通攻击/技能/休息]
|
57 |
+
- 行动结果:[详细描述]
|
58 |
+
- 伤害计算:[如果有伤害,显示计算过程]
|
59 |
+
- 状态变化:[双方状态变化]
|
60 |
+
|
61 |
+
4. 如果问题是状态查询相关:
|
62 |
+
- 当前状态:[详细描述]
|
63 |
+
- 可用行动:[可选操作]
|
64 |
+
- 建议策略:[战术建议]
|
65 |
+
|
66 |
+
回答要严谨简约,并保持专业性和准确性。如果不知道答案,请直接说明,不要编造信息。"""
|
67 |
+
|
68 |
+
def __init__(self, model:str, temperature:float=0.0, top_k:int=4, file_path:str=None, persist_path:str=None, appid:str=None, api_key:str=None, Spark_api_secret:str=None,Wenxin_secret_key:str=None, embedding = "openai", embedding_key = None, template=default_template_rq):
|
69 |
+
self.model = model
|
70 |
+
self.temperature = temperature
|
71 |
+
self.top_k = top_k
|
72 |
+
self.file_path = file_path
|
73 |
+
self.persist_path = persist_path
|
74 |
+
self.appid = appid
|
75 |
+
self.api_key = api_key
|
76 |
+
self.Spark_api_secret = Spark_api_secret
|
77 |
+
self.Wenxin_secret_key = Wenxin_secret_key
|
78 |
+
self.embedding = embedding
|
79 |
+
self.embedding_key = embedding_key
|
80 |
+
self.template = template
|
81 |
+
self.vectordb = get_vectordb(self.file_path, self.persist_path, self.embedding,self.embedding_key)
|
82 |
+
self.llm = model_to_llm(self.model, self.temperature, self.appid, self.api_key, self.Spark_api_secret,self.Wenxin_secret_key)
|
83 |
+
|
84 |
+
self.QA_CHAIN_PROMPT = PromptTemplate(input_variables=["context","question"],
|
85 |
+
template=self.template)
|
86 |
+
self.retriever = self.vectordb.as_retriever(
|
87 |
+
search_type="similarity_score_threshold",
|
88 |
+
search_kwargs={
|
89 |
+
'k': self.top_k,
|
90 |
+
'score_threshold': 0.3 # 降低阈值获取更多结果
|
91 |
+
}
|
92 |
+
)
|
93 |
+
# 自定义 QA 链
|
94 |
+
self.qa_chain = RetrievalQA.from_chain_type(llm=self.llm,
|
95 |
+
retriever=self.retriever,
|
96 |
+
return_source_documents=True,
|
97 |
+
chain_type_kwargs={"prompt":self.QA_CHAIN_PROMPT})
|
98 |
+
|
99 |
+
#基于大模型的问答 prompt 使用的默认提示模版
|
100 |
+
#default_template_llm = """请回答下列问题:{question}"""
|
101 |
+
|
102 |
+
def answer(self, question:str=None, temperature = None, top_k = 4):
|
103 |
+
""""
|
104 |
+
核心方法,调用问答链
|
105 |
+
arguments:
|
106 |
+
- question:用户提问
|
107 |
+
"""
|
108 |
+
|
109 |
+
if len(question) == 0:
|
110 |
+
return ""
|
111 |
+
|
112 |
+
if temperature == None:
|
113 |
+
temperature = self.temperature
|
114 |
+
|
115 |
+
if top_k == None:
|
116 |
+
top_k = self.top_k
|
117 |
+
|
118 |
+
result = self.qa_chain({"query": question, "temperature": temperature, "top_k": top_k})
|
119 |
+
answer = result["result"]
|
120 |
+
answer = re.sub(r"\\n", '<br/>', answer)
|
121 |
+
return answer
|
122 |
+
|
123 |
+
def battle_analysis(self, character1: str, character2: str):
|
124 |
+
"""
|
125 |
+
分析两个角色之间的战斗
|
126 |
+
"""
|
127 |
+
question = f"请分析{character1}和{character2}之间的战斗,谁会获胜?请详细分析双方的属性、技能和战斗策略。"
|
128 |
+
return self.answer(question, temperature=0.7, top_k=6)
|
129 |
+
|
130 |
+
def skill_analysis(self, character: str, skill: str):
|
131 |
+
"""
|
132 |
+
分析特定角色的特定技能
|
133 |
+
"""
|
134 |
+
question = f"请详细分析{character}的{skill}技能,包括技能效果、消耗和最佳使用时机。"
|
135 |
+
return self.answer(question, temperature=0.5, top_k=4)
|
136 |
+
|
137 |
+
def character_comparison(self, character1: str, character2: str):
|
138 |
+
"""
|
139 |
+
比较两个角色的属性
|
140 |
+
"""
|
141 |
+
question = f"请详细比较{character1}和{character2}的属性,包括攻击力、防御力、体力、耐力、法力、闪避和速度,并分析各自的优势和劣势。"
|
142 |
+
return self.answer(question, temperature=0.5, top_k=6)
|
143 |
+
|
144 |
+
def battle_strategy(self, character: str, opponent: str):
|
145 |
+
"""
|
146 |
+
为特定角色提供战斗策略
|
147 |
+
"""
|
148 |
+
question = f"如果{character}要对抗{opponent},应该采用什么战斗策略?请根据双方的属性和技能给出具体的建议。"
|
149 |
+
return self.answer(question, temperature=0.7, top_k=6)
|
150 |
+
|
151 |
+
def draw_character(self, specific_character: str = None):
|
152 |
+
"""
|
153 |
+
抽取角色卡
|
154 |
+
specific_character: 如果指定了具体角色,则抽取该角色;否则随机抽取
|
155 |
+
"""
|
156 |
+
if specific_character:
|
157 |
+
question = f"请抽取{specific_character}的角色卡,并详细介绍其属性和技能特点。"
|
158 |
+
else:
|
159 |
+
question = "请随机抽取一张三国人物卡,并详细介绍该角色的属性和技能特点。"
|
160 |
+
return self.answer(question, temperature=0.7, top_k=4)
|
161 |
+
|
162 |
+
def battle_simulation(self, player_character: str, action: str):
|
163 |
+
"""
|
164 |
+
模拟战斗
|
165 |
+
player_character: 玩家角色
|
166 |
+
action: 玩家选择的行动(普通攻击/使用技能/休息)
|
167 |
+
"""
|
168 |
+
question = f"玩家使用{player_character}选择了{action},请模拟一场战斗,详细描述战斗过程和结果。"
|
169 |
+
return self.answer(question, temperature=0.8, top_k=6)
|
170 |
+
|
171 |
+
def character_status(self, character: str):
|
172 |
+
"""
|
173 |
+
查询角色状态
|
174 |
+
"""
|
175 |
+
question = f"请查询{character}的当前状态,包括体力、灵力、技能冷却等信息。"
|
176 |
+
return self.answer(question, temperature=0.5, top_k=4)
|
qa_chain/__pycache__/Chat_QA_chain_self.cpython-310.pyc
ADDED
Binary file (3.64 kB). View file
|
|
qa_chain/__pycache__/Chat_QA_chain_self.cpython-311.pyc
ADDED
Binary file (5.19 kB). View file
|
|
qa_chain/__pycache__/Chat_QA_chain_self.cpython-39.pyc
ADDED
Binary file (5.06 kB). View file
|
|
qa_chain/__pycache__/QA_chain_self.cpython-310.pyc
ADDED
Binary file (3.12 kB). View file
|
|
qa_chain/__pycache__/QA_chain_self.cpython-311.pyc
ADDED
Binary file (4.49 kB). View file
|
|
qa_chain/__pycache__/QA_chain_self.cpython-39.pyc
ADDED
Binary file (6.89 kB). View file
|
|
qa_chain/__pycache__/get_vectordb.cpython-310.pyc
ADDED
Binary file (1.28 kB). View file
|
|
qa_chain/__pycache__/get_vectordb.cpython-311.pyc
ADDED
Binary file (1.81 kB). View file
|
|
qa_chain/__pycache__/get_vectordb.cpython-39.pyc
ADDED
Binary file (1.4 kB). View file
|
|
qa_chain/__pycache__/model_to_llm.cpython-310.pyc
ADDED
Binary file (1.63 kB). View file
|
|
qa_chain/__pycache__/model_to_llm.cpython-311.pyc
ADDED
Binary file (2.37 kB). View file
|
|
qa_chain/__pycache__/model_to_llm.cpython-39.pyc
ADDED
Binary file (1.84 kB). View file
|
|
qa_chain/get_vectordb.py
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import sys
|
2 |
+
# sys.path.append("../embedding")
|
3 |
+
# sys.path.append("../database")
|
4 |
+
|
5 |
+
from langchain.embeddings.openai import OpenAIEmbeddings # 调用 OpenAI 的 Embeddings 模型
|
6 |
+
import os
|
7 |
+
from embedding.zhipuai_embedding import ZhipuAIEmbeddings
|
8 |
+
from database.create_db import create_db,load_knowledge_db
|
9 |
+
from embedding.call_embedding import get_embedding
|
10 |
+
|
11 |
+
def get_vectordb(file_path:str=None, persist_path:str=None, embedding = "openai",embedding_key:str=None):
|
12 |
+
"""
|
13 |
+
返回向量数据库对象
|
14 |
+
输入参数:
|
15 |
+
question:
|
16 |
+
llm:
|
17 |
+
vectordb:向量数据库(必要参数),一个对象
|
18 |
+
template:提示模版(可选参数)可以自己设计一个提示模版,也有默认使用的
|
19 |
+
embedding:可以使用zhipuai等embedding,不输入该参数则默认使用 openai embedding,注意此时api_key不要输错
|
20 |
+
"""
|
21 |
+
|
22 |
+
embedding = get_embedding(embedding=embedding, embedding_key=embedding_key)
|
23 |
+
|
24 |
+
if os.path.exists(persist_path): #持久化目录存在
|
25 |
+
contents = os.listdir(persist_path)
|
26 |
+
if len(contents) == 0: #但是下面为空
|
27 |
+
print("创建新的向量数据库...")
|
28 |
+
vectordb = create_db(file_path, persist_path, embedding)
|
29 |
+
vectordb = load_knowledge_db(persist_path, embedding)
|
30 |
+
else:
|
31 |
+
print(f"加载已有向量数据库...")
|
32 |
+
vectordb = load_knowledge_db(persist_path, embedding)
|
33 |
+
else: #目录不存在,从头开始创建向量数据库
|
34 |
+
print("创建新的向量数据库...")
|
35 |
+
vectordb = create_db(file_path, persist_path, embedding)
|
36 |
+
vectordb = load_knowledge_db(persist_path, embedding)
|
37 |
+
|
38 |
+
print("向量数据库初始化完成")
|
39 |
+
return vectordb
|
qa_chain/model_to_llm.py
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import sys
|
2 |
+
import os
|
3 |
+
|
4 |
+
# 添加项目根目录到 Python 路径
|
5 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
6 |
+
project_root = os.path.dirname(current_dir)
|
7 |
+
if project_root not in sys.path:
|
8 |
+
sys.path.append(project_root)
|
9 |
+
|
10 |
+
from llm.wenxin_llm import Wenxin_LLM
|
11 |
+
from llm.spark_llm import Spark_LLM
|
12 |
+
from llm.zhipuai_llm import ZhipuAILLM
|
13 |
+
from langchain.chat_models import ChatOpenAI
|
14 |
+
from llm.call_llm import parse_llm_api_key
|
15 |
+
|
16 |
+
|
17 |
+
def model_to_llm(model:str=None, temperature:float=0.0, appid:str=None, api_key:str=None,Spark_api_secret:str=None,Wenxin_secret_key:str=None):
|
18 |
+
"""
|
19 |
+
星火:model,temperature,appid,api_key,api_secret
|
20 |
+
百度问心:model,temperature,api_key,api_secret
|
21 |
+
智谱:model,temperature,api_key
|
22 |
+
OpenAI:model,temperature,api_key
|
23 |
+
"""
|
24 |
+
if model in ["gpt-3.5-turbo", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-0613", "gpt-4", "gpt-4-32k"]:
|
25 |
+
if api_key == None:
|
26 |
+
api_key = parse_llm_api_key("openai")
|
27 |
+
llm = ChatOpenAI(model_name = model, temperature = temperature , openai_api_key = api_key)
|
28 |
+
elif model in ["ERNIE-Bot", "ERNIE-Bot-4", "ERNIE-Bot-turbo"]:
|
29 |
+
if api_key == None or Wenxin_secret_key == None:
|
30 |
+
api_key, Wenxin_secret_key = parse_llm_api_key("wenxin")
|
31 |
+
llm = Wenxin_LLM(model=model, temperature = temperature, api_key=api_key, secret_key=Wenxin_secret_key)
|
32 |
+
elif model == "Spark-X1":
|
33 |
+
if api_key == None or appid == None and Spark_api_secret == None:
|
34 |
+
api_key, appid, Spark_api_secret = parse_llm_api_key("spark")
|
35 |
+
llm = Spark_LLM(model=model, temperature = temperature, appid=appid, api_secret=Spark_api_secret, api_key=api_key)
|
36 |
+
elif model in ["chatglm_pro", "chatglm_std", "chatglm_lite"]:
|
37 |
+
if api_key == None:
|
38 |
+
api_key = parse_llm_api_key("zhipuai")
|
39 |
+
llm = ZhipuAILLM(model=model, zhipuai_api_key=api_key, temperature = temperature)
|
40 |
+
elif model in ["qwen-turbo", "qwen-plus", "qwen-max"]:
|
41 |
+
if api_key == None:
|
42 |
+
api_key = parse_llm_api_key("ali")
|
43 |
+
from llm.ali_llm import Ali_LLM
|
44 |
+
llm = Ali_LLM(model=model, temperature=temperature, api_key=api_key)
|
45 |
+
|
46 |
+
else:
|
47 |
+
raise ValueError(f"model{model} not support!!!")
|
48 |
+
return llm
|
qa_chain/test.ipynb
ADDED
@@ -0,0 +1,306 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 6,
|
6 |
+
"metadata": {},
|
7 |
+
"outputs": [],
|
8 |
+
"source": [
|
9 |
+
"from Chat_QA_chain_self import Chat_QA_chain_self #带历史记录的问答链\n",
|
10 |
+
"from QA_chain_self import QA_chain_self #不带历史记录的问答链"
|
11 |
+
]
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"cell_type": "code",
|
15 |
+
"execution_count": 7,
|
16 |
+
"metadata": {},
|
17 |
+
"outputs": [],
|
18 |
+
"source": [
|
19 |
+
"import os\n",
|
20 |
+
"# os.environ"
|
21 |
+
]
|
22 |
+
},
|
23 |
+
{
|
24 |
+
"cell_type": "markdown",
|
25 |
+
"metadata": {},
|
26 |
+
"source": [
|
27 |
+
"## 带历史记录的问答链 "
|
28 |
+
]
|
29 |
+
},
|
30 |
+
{
|
31 |
+
"cell_type": "code",
|
32 |
+
"execution_count": 12,
|
33 |
+
"metadata": {},
|
34 |
+
"outputs": [],
|
35 |
+
"source": [
|
36 |
+
"# 定义参数\n",
|
37 |
+
"# model可选值:[\"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k-0613\", \"gpt-3.5-turbo-0613\", \"gpt-4\", \"gpt-4-32k\"],[\"ERNIE-Bot\", \"ERNIE-Bot-4\", \"ERNIE-Bot-turbo\"],\n",
|
38 |
+
"# [\"Spark-1.5\", \"Spark-2.0\"],[\"chatglm_pro\", \"chatglm_std\", \"chatglm_lite\"]\n",
|
39 |
+
"model:str = \"chatglm_std\"\n",
|
40 |
+
"temperature:float=0.0\n",
|
41 |
+
"top_k:int=4 \n",
|
42 |
+
"chat_history:list=[] \n",
|
43 |
+
"file_path:str = \"/Users/lta/Desktop/llm-universe/data_base/knowledge_db\"\n",
|
44 |
+
"persist_path:str = \"/Users/lta/Desktop/llm-universe/data_base/vector_db/chroma\"\n",
|
45 |
+
"appid:str=None \n",
|
46 |
+
"api_key:str = \"\" #or 从本地环境读取\n",
|
47 |
+
"api_secret:str=None \n",
|
48 |
+
"embedding = \"m3e\" # [\"openai\",\"zhipuai\", \"m3e\"] 默认m3e\n",
|
49 |
+
"embedding_key = \"\""
|
50 |
+
]
|
51 |
+
},
|
52 |
+
{
|
53 |
+
"cell_type": "code",
|
54 |
+
"execution_count": 13,
|
55 |
+
"metadata": {},
|
56 |
+
"outputs": [
|
57 |
+
{
|
58 |
+
"name": "stdout",
|
59 |
+
"output_type": "stream",
|
60 |
+
"text": [
|
61 |
+
"<Chat_QA_chain_self.Chat_QA_chain_self object at 0x2a0310b80>\n"
|
62 |
+
]
|
63 |
+
}
|
64 |
+
],
|
65 |
+
"source": [
|
66 |
+
"qa_chain = Chat_QA_chain_self(model=model, temperature=temperature, top_k=top_k, chat_history=chat_history, file_path=file_path, persist_path=persist_path, api_key=api_key, embedding = embedding, embedding_key=embedding_key)\n",
|
67 |
+
"print(qa_chain)"
|
68 |
+
]
|
69 |
+
},
|
70 |
+
{
|
71 |
+
"cell_type": "markdown",
|
72 |
+
"metadata": {},
|
73 |
+
"source": [
|
74 |
+
"### 第一轮"
|
75 |
+
]
|
76 |
+
},
|
77 |
+
{
|
78 |
+
"cell_type": "code",
|
79 |
+
"execution_count": 14,
|
80 |
+
"metadata": {},
|
81 |
+
"outputs": [],
|
82 |
+
"source": [
|
83 |
+
"question = \"我可以学习到关于强化学习的知识吗?\"\n",
|
84 |
+
"#answer,chat_history = qa_chain.answer(question)\n",
|
85 |
+
"answer = qa_chain.answer(question)\n"
|
86 |
+
]
|
87 |
+
},
|
88 |
+
{
|
89 |
+
"cell_type": "code",
|
90 |
+
"execution_count": 15,
|
91 |
+
"metadata": {},
|
92 |
+
"outputs": [
|
93 |
+
{
|
94 |
+
"name": "stdout",
|
95 |
+
"output_type": "stream",
|
96 |
+
"text": [
|
97 |
+
"[('我可以学习到关于强化学习的知识吗?', '根据您提供的信息,强化学习是一种机器学习的子领域,主要研究在不确定的情况下如何做出好的决策。强化学习应用广泛,如玩游戏、控制机器人、自动驾驶等。您提到的《Easy RL:强化学习教程》是一本关于强化学习的教材,该书通过一些简单生动的例子来解释强化学习概念,配有对应的概念词、习题和面试题,以及代码实战。这本书得到了一些专业人士的好评,并被推荐用于学习强化学习。\\\\n\\\\n另外,您还提到了一个名为rl-papers的仓库,该仓库收集了强化学习及其应用领域的论文,涵盖了基础强化学习、多智体强化学习、推荐系统、游戏理论、交通系统等多个方面。通过阅读这些论文,您也可以了解到关于强化学习的知识。\\\\n\\\\n综上所述,您可以学习到关于强化学习的知识,可以通过阅读《Easy RL:强化学习教程》和参考rl-papers仓库中的论文来进一步了解强化学习。')]\n",
|
98 |
+
"[('我可以学习到关于强化学习的知识吗?', '根据您提供的信息,强化学习是一种机器学习的子领域,主要研究在不确定的情况下如何做出好的决策。强化学习应用广泛,如玩游戏、控制机器人、自动驾驶等。您提到的《Easy RL:强化学习教程》是一本关于强化学习的教材,该书通过一些简单生动的例子来解释强化学习概念,配有对应的概念词、习题和面试题,以及代码实战。这本书得到了一些专业人士的好评,并被推荐用于学习强化学习。\\\\n\\\\n另外,您还提到了一个名为rl-papers的仓库,该仓库收集了强化学习及其应用领域的论文,涵盖了基础强化学习、多智体强化学习、推荐系统、游戏理论、交通系统等多个方面。通过阅读这些论文,您也可以了解到关于强化学习的知识。\\\\n\\\\n综上所述,您可以学习到关于强化学习的知识,可以通过阅读《Easy RL:强化学习教程》和参考rl-papers仓库中的论文来进一步了解强化学习。')]\n"
|
99 |
+
]
|
100 |
+
}
|
101 |
+
],
|
102 |
+
"source": [
|
103 |
+
"print(answer)\n",
|
104 |
+
"print(chat_history)"
|
105 |
+
]
|
106 |
+
},
|
107 |
+
{
|
108 |
+
"cell_type": "markdown",
|
109 |
+
"metadata": {},
|
110 |
+
"source": [
|
111 |
+
"### 第二��"
|
112 |
+
]
|
113 |
+
},
|
114 |
+
{
|
115 |
+
"cell_type": "code",
|
116 |
+
"execution_count": 16,
|
117 |
+
"metadata": {},
|
118 |
+
"outputs": [],
|
119 |
+
"source": [
|
120 |
+
"question = \"为什么这门课需要教这方面的知识?\"\n",
|
121 |
+
"answer,chat_history = qa_chain.answer(question)"
|
122 |
+
]
|
123 |
+
},
|
124 |
+
{
|
125 |
+
"cell_type": "code",
|
126 |
+
"execution_count": 17,
|
127 |
+
"metadata": {},
|
128 |
+
"outputs": [
|
129 |
+
{
|
130 |
+
"name": "stdout",
|
131 |
+
"output_type": "stream",
|
132 |
+
"text": [
|
133 |
+
"('我可以学习到关于强化学习的知识吗?', '根据您提供的信息,强化学习是一种机器学习的子领域,主要研究在不确定的情况下如何做出好的决策。强化学习应用广泛,如玩游戏、控制机器人、自动驾驶等。您提到的《Easy RL:强化学习教程》是一本关于强化学习的教材,该书通过一些简单生动的例子来解释强化学习概念,配有对应的概念词、习题和面试题,以及代码实战。这本书得到了一些专业人士的好评,并被推荐用于学习强化学习。\\\\n\\\\n另外,您还提到了一个名为rl-papers的仓库,该仓库收集了强化学习及其应用领域的论文,涵盖了基础强化学习、多智体强化学习、推荐系统、游戏理论、交通系统等多个方面。通过阅读这些论文,您也可以了解到关于强化学习的知识。\\\\n\\\\n综上所述,您可以学习到关于强化学习的知识,可以通过阅读《Easy RL:强化学习教程》和参考rl-papers仓库中的论文来进一步了解强化学习。')\n",
|
134 |
+
"('为什么这门课需要教这方面的知识?', '强化学习作为人工智能的一个重要分支,主要研究在不确定的情况下如何做出好的决策。现实生活中许多问题都具有不确定性和动态性,因此强化学习在很多领域都有广泛的应用,如自动驾驶、机器人控制、智能交通、游戏AI等。学习强化学习可以帮助学生更好地理解和解决这些问题,为我国人工智能领域的发展贡献力量。此外,强化学习也是目前学术界和工业界的研究热点,掌握这门课程的知识可以帮助学生在未来的工作和研究中更好地适应和引领这个领域的发展。')\n"
|
135 |
+
]
|
136 |
+
}
|
137 |
+
],
|
138 |
+
"source": [
|
139 |
+
"print(answer)\n",
|
140 |
+
"print(chat_history)"
|
141 |
+
]
|
142 |
+
},
|
143 |
+
{
|
144 |
+
"cell_type": "markdown",
|
145 |
+
"metadata": {},
|
146 |
+
"source": [
|
147 |
+
"### 改变历史记录的长度"
|
148 |
+
]
|
149 |
+
},
|
150 |
+
{
|
151 |
+
"cell_type": "code",
|
152 |
+
"execution_count": 18,
|
153 |
+
"metadata": {},
|
154 |
+
"outputs": [
|
155 |
+
{
|
156 |
+
"name": "stdout",
|
157 |
+
"output_type": "stream",
|
158 |
+
"text": [
|
159 |
+
"[('为什么这门课需要教这方面的知识?', '强化学习作为人工智能的一个重要分支,主要研究在不确定的情况下如何做出好的决策。现实生活中许多问题都具有不确定性和动态性,因此强化学习在很多领域都有广泛的应用,如自动驾驶、机器人控制、智能交通、游戏AI等。学习强化学习可以帮助学生更好地理解和解决这些问题,为我国人工智能领域的发展贡献力量。此外,强化学习也是目前学术界和工业界的研究热点,掌握这门课程的知识可以帮助学生在未来的工作和研究中更好地适应和引领这个领域的发展。')]\n"
|
160 |
+
]
|
161 |
+
}
|
162 |
+
],
|
163 |
+
"source": [
|
164 |
+
"history_len = 1 \n",
|
165 |
+
"\n",
|
166 |
+
"### 改变历史记录的长度,使用的是history_len参数来改变保留历史记录的长度\n",
|
167 |
+
"chat_history = qa_chain.change_history_length(history_len)\n",
|
168 |
+
"print(chat_history)"
|
169 |
+
]
|
170 |
+
},
|
171 |
+
{
|
172 |
+
"cell_type": "markdown",
|
173 |
+
"metadata": {},
|
174 |
+
"source": [
|
175 |
+
"### 清除历史记录"
|
176 |
+
]
|
177 |
+
},
|
178 |
+
{
|
179 |
+
"cell_type": "code",
|
180 |
+
"execution_count": 19,
|
181 |
+
"metadata": {},
|
182 |
+
"outputs": [
|
183 |
+
{
|
184 |
+
"name": "stdout",
|
185 |
+
"output_type": "stream",
|
186 |
+
"text": [
|
187 |
+
"None\n"
|
188 |
+
]
|
189 |
+
}
|
190 |
+
],
|
191 |
+
"source": [
|
192 |
+
"chat_history = qa_chain.clear_history()\n",
|
193 |
+
"print(chat_history)"
|
194 |
+
]
|
195 |
+
},
|
196 |
+
{
|
197 |
+
"cell_type": "markdown",
|
198 |
+
"metadata": {},
|
199 |
+
"source": [
|
200 |
+
"## 不带历史记录的问答链"
|
201 |
+
]
|
202 |
+
},
|
203 |
+
{
|
204 |
+
"cell_type": "code",
|
205 |
+
"execution_count": 26,
|
206 |
+
"metadata": {},
|
207 |
+
"outputs": [],
|
208 |
+
"source": [
|
209 |
+
"# 定义参数\n",
|
210 |
+
"# model可选值:[\"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k-0613\", \"gpt-3.5-turbo-0613\", \"gpt-4\", \"gpt-4-32k\"],[\"ERNIE-Bot\", \"ERNIE-Bot-4\", \"ERNIE-Bot-turbo\"],\n",
|
211 |
+
"# [\"Spark-1.5\", \"Spark-2.0\"],[\"chatglm_pro\", \"chatglm_std\", \"chatglm_lite\"]\n",
|
212 |
+
"model:str = \"chatglm_std\"\n",
|
213 |
+
"temperature:float=0.0\n",
|
214 |
+
"top_k:int=4 \n",
|
215 |
+
"file_path:str = \"/Users/lta/Desktop/llm-universe/data_base/knowledge_db\"\n",
|
216 |
+
"persist_path:str = \"/Users/lta/Desktop/llm-universe/data_base/vector_db/chroma\"\n",
|
217 |
+
"appid:str=None \n",
|
218 |
+
"api_key:str = \"\" #or从本地环境读取\n",
|
219 |
+
"api_secret:str=None \n",
|
220 |
+
"embedding = \"m3e\"\n",
|
221 |
+
"embedding_key = \"\""
|
222 |
+
]
|
223 |
+
},
|
224 |
+
{
|
225 |
+
"cell_type": "code",
|
226 |
+
"execution_count": 27,
|
227 |
+
"metadata": {},
|
228 |
+
"outputs": [
|
229 |
+
{
|
230 |
+
"name": "stdout",
|
231 |
+
"output_type": "stream",
|
232 |
+
"text": [
|
233 |
+
"<QA_chain_self.QA_chain_self object at 0x2f5afdf10>\n"
|
234 |
+
]
|
235 |
+
}
|
236 |
+
],
|
237 |
+
"source": [
|
238 |
+
"#星火输入参数用法\n",
|
239 |
+
"#qa_chain = QA_chain_self(model=model, temperature=temperature, top_k=top_k, file_path=file_path, persist_path=persist_path, appid=appid,api_key=api_key,Spark_api_secret=Spark_api_secret, embedding = embedding,embedding_key=embedding_key)\n",
|
240 |
+
"\n",
|
241 |
+
"##百度文心输入参数用法\n",
|
242 |
+
"#qa_chain = QA_chain_self(model=model, temperature=temperature, top_k=top_k, file_path=file_path, persist_path=persist_path, appid=appid,api_key=api_key,Wenxin_api_secret=Wenxin_api_secret, embedding = embedding,embedding_key=embedding_key)\n",
|
243 |
+
"\n",
|
244 |
+
"#智谱(或OpenAI)输入参数用法\n",
|
245 |
+
"qa_chain = QA_chain_self(model=model, temperature=temperature, top_k=top_k, file_path=file_path, persist_path=persist_path, appid=appid,api_key=api_key, embedding = embedding,embedding_key=embedding_key)\n",
|
246 |
+
"print(qa_chain)"
|
247 |
+
]
|
248 |
+
},
|
249 |
+
{
|
250 |
+
"cell_type": "code",
|
251 |
+
"execution_count": 29,
|
252 |
+
"metadata": {},
|
253 |
+
"outputs": [],
|
254 |
+
"source": [
|
255 |
+
"question = \"什么是蘑菇书(easyrl)?\"\n",
|
256 |
+
"answer = qa_chain.answer(question)"
|
257 |
+
]
|
258 |
+
},
|
259 |
+
{
|
260 |
+
"cell_type": "code",
|
261 |
+
"execution_count": 30,
|
262 |
+
"metadata": {},
|
263 |
+
"outputs": [
|
264 |
+
{
|
265 |
+
"name": "stdout",
|
266 |
+
"output_type": "stream",
|
267 |
+
"text": [
|
268 |
+
"蘑菇书(easy-rl)是一本关于强化学习的教程,主要包含李宏毅老师的强化学习视频内容、经典资料整理、章节习题和算法实战等,旨在帮助读者学习强化学习并探索人工智能领域。谢谢你的提问!\n"
|
269 |
+
]
|
270 |
+
}
|
271 |
+
],
|
272 |
+
"source": [
|
273 |
+
"print(answer)"
|
274 |
+
]
|
275 |
+
},
|
276 |
+
{
|
277 |
+
"cell_type": "markdown",
|
278 |
+
"metadata": {},
|
279 |
+
"source": [
|
280 |
+
"------------------\n",
|
281 |
+
"> 其他模型可参考上面的实例进行使用,embedding 目前支持 openAI 和智谱以及m3e的模型,其他类型敬请期待!"
|
282 |
+
]
|
283 |
+
}
|
284 |
+
],
|
285 |
+
"metadata": {
|
286 |
+
"kernelspec": {
|
287 |
+
"display_name": "xuhu",
|
288 |
+
"language": "python",
|
289 |
+
"name": "python3"
|
290 |
+
},
|
291 |
+
"language_info": {
|
292 |
+
"codemirror_mode": {
|
293 |
+
"name": "ipython",
|
294 |
+
"version": 3
|
295 |
+
},
|
296 |
+
"file_extension": ".py",
|
297 |
+
"mimetype": "text/x-python",
|
298 |
+
"name": "python",
|
299 |
+
"nbconvert_exporter": "python",
|
300 |
+
"pygments_lexer": "ipython3",
|
301 |
+
"version": "3.9.18"
|
302 |
+
}
|
303 |
+
},
|
304 |
+
"nbformat": 4,
|
305 |
+
"nbformat_minor": 2
|
306 |
+
}
|
qa_chain/test_chat.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import sys
|
2 |
+
import os
|
3 |
+
|
4 |
+
# 添加项目根目录到 Python 路径
|
5 |
+
current_dir = os.path.dirname(os.path.abspath(__file__))
|
6 |
+
project_root = os.path.dirname(current_dir)
|
7 |
+
if project_root not in sys.path:
|
8 |
+
sys.path.append(project_root)
|
9 |
+
|
10 |
+
from qa_chain.Chat_QA_chain_self import Chat_QA_chain_self
|
11 |
+
from dotenv import load_dotenv
|
12 |
+
|
13 |
+
# 加载环境变量
|
14 |
+
load_dotenv()
|
15 |
+
|
16 |
+
chat_history:list=[] # 初始化聊天历史记录
|
17 |
+
|
18 |
+
|
19 |
+
def chat_with_ai():
|
20 |
+
print("正在初始化AI助手...")
|
21 |
+
chat_qa = Chat_QA_chain_self(
|
22 |
+
model="qwen-max", # 改为阿里通义千问模型
|
23 |
+
temperature=0.7,
|
24 |
+
top_k=4,
|
25 |
+
chat_history=chat_history,
|
26 |
+
persist_path="./vector_db/chroma_sanguo",
|
27 |
+
file_path="./knowledge_db/sanguo_characters",
|
28 |
+
api_key=os.getenv("ali_api_key"), # 使用阿里API Key
|
29 |
+
embedding="m3e",
|
30 |
+
embedding_key=None
|
31 |
+
)
|
32 |
+
print("AI助手初始化完成,可以开始对话了!(输入'退出'结束对话)")
|
33 |
+
|
34 |
+
while True:
|
35 |
+
user_input = input("\n您: ")
|
36 |
+
if user_input.lower() in ["退出", "exit", "quit"]:
|
37 |
+
break
|
38 |
+
|
39 |
+
history = chat_qa.answer(user_input, chat_history=chat_history)
|
40 |
+
chat_history[:] = history # 关键修改:将更新后的历史记录同步到全局变量
|
41 |
+
print("\n完整对话历史:")
|
42 |
+
for i, (q, a) in enumerate(history, 1):
|
43 |
+
print(f"{i}. 您: {q}")
|
44 |
+
print(f" AI: {a}\n")
|
45 |
+
print("\nAI助手最新回复:", history[-1][1])
|
46 |
+
|
47 |
+
if __name__ == "__main__":
|
48 |
+
chat_with_ai()
|
49 |
+
|
serve/__pycache__/api.cpython-310.pyc
ADDED
Binary file (2.22 kB). View file
|
|
serve/__pycache__/api.cpython-39.pyc
ADDED
Binary file (2.27 kB). View file
|
|
serve/__pycache__/test.cpython-39.pyc
ADDED
Binary file (984 Bytes). View file
|
|
serve/api.py
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env python
|
2 |
+
# -*- encoding: utf-8 -*-
|
3 |
+
'''
|
4 |
+
@File : spark_api.py
|
5 |
+
@Time : 2023/09/24 11:00:46
|
6 |
+
@Author : Logan Zou
|
7 |
+
@Version : 1.0
|
8 |
+
@Contact : loganzou0421@163.com
|
9 |
+
@License : (C)Copyright 2017-2018, Liugroup-NLPR-CASIA
|
10 |
+
@Desc : 启动服务为本地 API
|
11 |
+
'''
|
12 |
+
|
13 |
+
from fastapi import FastAPI
|
14 |
+
from pydantic import BaseModel
|
15 |
+
import os
|
16 |
+
import sys
|
17 |
+
from pathlib import Path
|
18 |
+
|
19 |
+
# 添加项目根目录到 Python 路径
|
20 |
+
current_dir = Path(__file__).resolve().parent
|
21 |
+
project_root = current_dir.parent
|
22 |
+
sys.path.append(str(project_root))
|
23 |
+
|
24 |
+
from qa_chain.QA_chain_self import QA_chain_self
|
25 |
+
|
26 |
+
# os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
|
27 |
+
# os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"
|
28 |
+
|
29 |
+
app = FastAPI() # 创建 api 对象
|
30 |
+
|
31 |
+
template = """使用以下上下文来回答最后的问题。如果你不知道答案,就说你不知道,不要试图编造答
|
32 |
+
案。最多使用三句话。尽量使答案简明扼要。总是在回答的最后说"谢谢你的提问!"。
|
33 |
+
{context}
|
34 |
+
问题: {question}
|
35 |
+
有用的回答:"""
|
36 |
+
|
37 |
+
# 定义一个数据模型,用于接收POST请求中的数据
|
38 |
+
class Item(BaseModel):
|
39 |
+
prompt : str # 用户 prompt
|
40 |
+
model : str = "gpt-3.5-turbo"# 使用的模型
|
41 |
+
temperature : float = 0.1# 温度系数
|
42 |
+
if_history : bool = False # 是否使用历史对话功能
|
43 |
+
# API_Key
|
44 |
+
api_key: str = None
|
45 |
+
# Secret_Key
|
46 |
+
secret_key : str = None
|
47 |
+
# access_token
|
48 |
+
access_token: str = None
|
49 |
+
# APPID
|
50 |
+
appid : str = None
|
51 |
+
# APISecret
|
52 |
+
Spark_api_secret : str = None
|
53 |
+
# Secret_key
|
54 |
+
Wenxin_secret_key : str = None
|
55 |
+
# 数据库路径
|
56 |
+
db_path : str = "/Users/lta/Desktop/llm-universe/data_base/vector_db/chroma"
|
57 |
+
# 源文件路径
|
58 |
+
file_path : str = "/Users/lta/Desktop/llm-universe/data_base/knowledge_db"
|
59 |
+
# prompt template
|
60 |
+
prompt_template : str = template
|
61 |
+
# Template 变量
|
62 |
+
input_variables : list = ["context","question"]
|
63 |
+
# Embdding
|
64 |
+
embedding : str = "m3e"
|
65 |
+
# Top K
|
66 |
+
top_k : int = 5
|
67 |
+
# embedding_key
|
68 |
+
embedding_key : str = None
|
69 |
+
|
70 |
+
@app.post("/")
|
71 |
+
async def get_response(item: Item):
|
72 |
+
|
73 |
+
# 首先确定需要调用的链
|
74 |
+
if not item.if_history:
|
75 |
+
# 调用 Chat 链
|
76 |
+
# return item.embedding_key
|
77 |
+
if item.embedding_key == None:
|
78 |
+
item.embedding_key = item.api_key
|
79 |
+
chain = QA_chain_self(model=item.model, temperature=item.temperature, top_k=item.top_k, file_path=item.file_path, persist_path=item.db_path,
|
80 |
+
appid=item.appid, api_key=item.api_key, embedding=item.embedding, template=template, Spark_api_secret=item.Spark_api_secret, Wenxin_secret_key=item.Wenxin_secret_key, embedding_key=item.embedding_key)
|
81 |
+
|
82 |
+
response = chain.answer(question = item.prompt)
|
83 |
+
|
84 |
+
return response
|
85 |
+
|
86 |
+
# 由于 API 存在即时性问题,不能支持历史链
|
87 |
+
else:
|
88 |
+
return "API 不支持历史链"
|
serve/run_api.sh
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
! cd project/serve
|
2 |
+
! uvicorn api:app --reload
|
serve/run_gradio.py
ADDED
@@ -0,0 +1,251 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# 导入必要的库
|
2 |
+
|
3 |
+
import sys
|
4 |
+
import os # 用于操作系统相关的操作,例如读取环境变量
|
5 |
+
|
6 |
+
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
|
7 |
+
|
8 |
+
import IPython.display # 用于在 IPython 环境中显示数据,例如图片
|
9 |
+
import io # 用于处理流式数据(例如文件流)
|
10 |
+
import gradio as gr
|
11 |
+
from dotenv import load_dotenv, find_dotenv
|
12 |
+
from llm.call_llm import get_completion
|
13 |
+
from database.create_db import create_db_info
|
14 |
+
from qa_chain.Chat_QA_chain_self import Chat_QA_chain_self
|
15 |
+
from qa_chain.QA_chain_self import QA_chain_self
|
16 |
+
import re
|
17 |
+
# 导入 dotenv 库的函数
|
18 |
+
# dotenv 允许您从 .env 文件中读取环境变量
|
19 |
+
# 这在开发时特别有用,可以避免将敏感信息(如API密钥)硬编码到代码中
|
20 |
+
|
21 |
+
# 寻找 .env 文件并加载它的内容
|
22 |
+
# 这允许您使用 os.environ 来读取在 .env 文件中设置的环境变量
|
23 |
+
_ = load_dotenv(find_dotenv())
|
24 |
+
LLM_MODEL_DICT = {
|
25 |
+
"openai": ["gpt-3.5-turbo", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-0613", "gpt-4", "gpt-4-32k"],
|
26 |
+
"wenxin": ["ERNIE-Bot", "ERNIE-Bot-4", "ERNIE-Bot-turbo"],
|
27 |
+
"xinhuo": ["Spark-X1"],
|
28 |
+
"zhipuai": ["chatglm_pro", "chatglm_std", "chatglm_lite"]
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
LLM_MODEL_LIST = sum(list(LLM_MODEL_DICT.values()),[])
|
33 |
+
INIT_LLM = "chatglm_std"
|
34 |
+
EMBEDDING_MODEL_LIST = ['zhipuai', 'openai', 'm3e']
|
35 |
+
INIT_EMBEDDING_MODEL = "m3e"
|
36 |
+
DEFAULT_DB_PATH = "./knowledge_db"
|
37 |
+
DEFAULT_PERSIST_PATH = "./vector_db/chroma"
|
38 |
+
AIGC_AVATAR_PATH = "./figures/aigc_avatar.png"
|
39 |
+
DATAWHALE_AVATAR_PATH = "./figures/datawhale_avatar.png"
|
40 |
+
AIGC_LOGO_PATH = "./figures/aigc_logo.png"
|
41 |
+
DATAWHALE_LOGO_PATH = "./figures/datawhale_logo.png"
|
42 |
+
|
43 |
+
def get_model_by_platform(platform):
|
44 |
+
return LLM_MODEL_DICT.get(platform, "")
|
45 |
+
class Model_center():
|
46 |
+
"""
|
47 |
+
存储问答 Chain 的对象
|
48 |
+
|
49 |
+
- chat_qa_chain_self: 以 (model, embedding) 为键存储的带历史记录的问答链。
|
50 |
+
- qa_chain_self: 以 (model, embedding) 为键存储的不带历史记录的问答链。
|
51 |
+
"""
|
52 |
+
def __init__(self):
|
53 |
+
self.chat_qa_chain_self = {}
|
54 |
+
self.qa_chain_self = {}
|
55 |
+
|
56 |
+
def chat_qa_chain_self_answer(self, question: str, chat_history: list = [], model: str = "openai", embedding: str = "openai", temperature: float = 0.0, top_k: int = 4, history_len: int = 3, file_path: str = DEFAULT_DB_PATH, persist_path: str = DEFAULT_PERSIST_PATH):
|
57 |
+
"""
|
58 |
+
调用带历史记录的问答链进行回答
|
59 |
+
"""
|
60 |
+
if question == None or len(question) < 1:
|
61 |
+
return "", chat_history
|
62 |
+
try:
|
63 |
+
if (model, embedding) not in self.chat_qa_chain_self:
|
64 |
+
self.chat_qa_chain_self[(model, embedding)] = Chat_QA_chain_self(model=model, temperature=temperature,
|
65 |
+
top_k=top_k, chat_history=chat_history, file_path=file_path, persist_path=persist_path, embedding=embedding)
|
66 |
+
chain = self.chat_qa_chain_self[(model, embedding)]
|
67 |
+
return "", chain.answer(question=question, temperature=temperature, top_k=top_k)
|
68 |
+
except Exception as e:
|
69 |
+
return e, chat_history
|
70 |
+
|
71 |
+
def qa_chain_self_answer(self, question: str, chat_history: list = [], model: str = "openai", embedding="openai", temperature: float = 0.0, top_k: int = 4, file_path: str = DEFAULT_DB_PATH, persist_path: str = DEFAULT_PERSIST_PATH):
|
72 |
+
"""
|
73 |
+
调用不带历史记录的问答链进行回答
|
74 |
+
"""
|
75 |
+
if question == None or len(question) < 1:
|
76 |
+
return "", chat_history
|
77 |
+
try:
|
78 |
+
if (model, embedding) not in self.qa_chain_self:
|
79 |
+
self.qa_chain_self[(model, embedding)] = QA_chain_self(model=model, temperature=temperature,
|
80 |
+
top_k=top_k, file_path=file_path, persist_path=persist_path, embedding=embedding)
|
81 |
+
chain = self.qa_chain_self[(model, embedding)]
|
82 |
+
chat_history.append(
|
83 |
+
(question, chain.answer(question, temperature, top_k)))
|
84 |
+
return "", chat_history
|
85 |
+
except Exception as e:
|
86 |
+
return e, chat_history
|
87 |
+
|
88 |
+
def clear_history(self):
|
89 |
+
if len(self.chat_qa_chain_self) > 0:
|
90 |
+
for chain in self.chat_qa_chain_self.values():
|
91 |
+
chain.clear_history()
|
92 |
+
|
93 |
+
|
94 |
+
def format_chat_prompt(message, chat_history):
|
95 |
+
"""
|
96 |
+
该函数用于格式化聊天 prompt。
|
97 |
+
|
98 |
+
参数:
|
99 |
+
message: 当前的用户消息。
|
100 |
+
chat_history: 聊天历史记录。
|
101 |
+
|
102 |
+
返回:
|
103 |
+
prompt: 格式化后的 prompt。
|
104 |
+
"""
|
105 |
+
# 初始化一个空字符串,用于存放格式化后的聊天 prompt。
|
106 |
+
prompt = ""
|
107 |
+
# 遍历聊天历史记录。
|
108 |
+
for turn in chat_history:
|
109 |
+
# 从聊天记录中提取用户和机器人的消息。
|
110 |
+
user_message, bot_message = turn
|
111 |
+
# 更新 prompt,加入用户和机器人的消息。
|
112 |
+
prompt = f"{prompt}\nUser: {user_message}\nAssistant: {bot_message}"
|
113 |
+
# 将当前的用户消息也加入到 prompt中,并预留一个位置给机器人的回复。
|
114 |
+
prompt = f"{prompt}\nUser: {message}\nAssistant:"
|
115 |
+
# 返回格式化后的 prompt。
|
116 |
+
return prompt
|
117 |
+
|
118 |
+
|
119 |
+
|
120 |
+
def respond(message, chat_history, llm, history_len=3, temperature=0.1, max_tokens=2048):
|
121 |
+
"""
|
122 |
+
该函数用于生成机器人的回复。
|
123 |
+
|
124 |
+
参数:
|
125 |
+
message: 当前的用户消息。
|
126 |
+
chat_history: 聊天历史记录。
|
127 |
+
|
128 |
+
返回:
|
129 |
+
"": 空字符串表示没有内容需要显示在界面上,可以替换为真正的机器人回复。
|
130 |
+
chat_history: 更新后的聊天历史记录
|
131 |
+
"""
|
132 |
+
if message == None or len(message) < 1:
|
133 |
+
return "", chat_history
|
134 |
+
try:
|
135 |
+
# 限制 history 的记忆长度
|
136 |
+
chat_history = chat_history[-history_len:] if history_len > 0 else []
|
137 |
+
# 调用上面的函数,将用户的消息和聊天历史记录格式化为一个 prompt。
|
138 |
+
formatted_prompt = format_chat_prompt(message, chat_history)
|
139 |
+
# 使用llm对象的predict方法生成机器人的回复(注意:llm对象在此代码中并未定义)。
|
140 |
+
bot_message = get_completion(
|
141 |
+
formatted_prompt, llm, temperature=temperature, max_tokens=max_tokens)
|
142 |
+
# 将bot_message中\n换为<br/>
|
143 |
+
bot_message = re.sub(r"\\n", '<br/>', bot_message)
|
144 |
+
# 将用户的消息和机器人的回复加入到聊天历史记录中。
|
145 |
+
chat_history.append((message, bot_message))
|
146 |
+
# 返回一个空字符串和更新后的聊天历史记录(这里的空字符串可以替换为真正的机器人回复,如果需要显示在界面上)。
|
147 |
+
return "", chat_history
|
148 |
+
except Exception as e:
|
149 |
+
return e, chat_history
|
150 |
+
|
151 |
+
|
152 |
+
model_center = Model_center()
|
153 |
+
|
154 |
+
block = gr.Blocks()
|
155 |
+
with block as demo:
|
156 |
+
with gr.Row(equal_height=True):
|
157 |
+
gr.Image(value=AIGC_LOGO_PATH, scale=1, min_width=10, show_label=False, show_download_button=False, container=False)
|
158 |
+
|
159 |
+
with gr.Column(scale=2):
|
160 |
+
gr.Markdown("""<h1><center>动手学大模型应用开发</center></h1>
|
161 |
+
<center>LLM-UNIVERSE</center>
|
162 |
+
""")
|
163 |
+
gr.Image(value=DATAWHALE_LOGO_PATH, scale=1, min_width=10, show_label=False, show_download_button=False, container=False)
|
164 |
+
|
165 |
+
with gr.Row():
|
166 |
+
with gr.Column(scale=4):
|
167 |
+
chatbot = gr.Chatbot(height=400, show_copy_button=True, show_share_button=True, avatar_images=(AIGC_AVATAR_PATH, DATAWHALE_AVATAR_PATH))
|
168 |
+
# 创建一个文本框组件,用于输入 prompt。
|
169 |
+
msg = gr.Textbox(label="Prompt/问题")
|
170 |
+
|
171 |
+
with gr.Row():
|
172 |
+
# 创建提交按钮。
|
173 |
+
db_with_his_btn = gr.Button("Chat db with history")
|
174 |
+
db_wo_his_btn = gr.Button("Chat db without history")
|
175 |
+
llm_btn = gr.Button("Chat with llm")
|
176 |
+
with gr.Row():
|
177 |
+
# 创建一个清除按钮,用于清除聊天机器人组件的内容。
|
178 |
+
clear = gr.ClearButton(
|
179 |
+
components=[chatbot], value="Clear console")
|
180 |
+
|
181 |
+
with gr.Column(scale=1):
|
182 |
+
file = gr.File(label='请选择知识库目录', file_count='directory',
|
183 |
+
file_types=['.txt', '.md', '.docx', '.pdf'])
|
184 |
+
with gr.Row():
|
185 |
+
init_db = gr.Button("知识库文件向量化")
|
186 |
+
model_argument = gr.Accordion("参数配置", open=False)
|
187 |
+
with model_argument:
|
188 |
+
temperature = gr.Slider(0,
|
189 |
+
1,
|
190 |
+
value=0.01,
|
191 |
+
step=0.01,
|
192 |
+
label="llm temperature",
|
193 |
+
interactive=True)
|
194 |
+
|
195 |
+
top_k = gr.Slider(1,
|
196 |
+
10,
|
197 |
+
value=3,
|
198 |
+
step=1,
|
199 |
+
label="vector db search top k",
|
200 |
+
interactive=True)
|
201 |
+
|
202 |
+
history_len = gr.Slider(0,
|
203 |
+
5,
|
204 |
+
value=3,
|
205 |
+
step=1,
|
206 |
+
label="history length",
|
207 |
+
interactive=True)
|
208 |
+
|
209 |
+
model_select = gr.Accordion("模型选择")
|
210 |
+
with model_select:
|
211 |
+
llm = gr.Dropdown(
|
212 |
+
LLM_MODEL_LIST,
|
213 |
+
label="large language model",
|
214 |
+
value=INIT_LLM,
|
215 |
+
interactive=True)
|
216 |
+
|
217 |
+
embeddings = gr.Dropdown(EMBEDDING_MODEL_LIST,
|
218 |
+
label="Embedding model",
|
219 |
+
value=INIT_EMBEDDING_MODEL)
|
220 |
+
|
221 |
+
# 设置初始化向量数据库按钮的点击事件。当点击时,调用 create_db_info 函数,并传入用户的文件和希��使用的 Embedding 模型。
|
222 |
+
init_db.click(create_db_info,
|
223 |
+
inputs=[file, embeddings], outputs=[msg])
|
224 |
+
|
225 |
+
# 设置按钮的点击事件。当点击时,调用上面定义的 chat_qa_chain_self_answer 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。
|
226 |
+
db_with_his_btn.click(model_center.chat_qa_chain_self_answer, inputs=[
|
227 |
+
msg, chatbot, llm, embeddings, temperature, top_k, history_len],
|
228 |
+
outputs=[msg, chatbot])
|
229 |
+
# 设置按钮的点击事件。当点击时,调用上面定义的 qa_chain_self_answer 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。
|
230 |
+
db_wo_his_btn.click(model_center.qa_chain_self_answer, inputs=[
|
231 |
+
msg, chatbot, llm, embeddings, temperature, top_k], outputs=[msg, chatbot])
|
232 |
+
# 设置按钮的点击事件。当点击时,调用上面定义的 respond 函数,并传入用户的消息和聊天历史记录,然后更新文本框和聊天机器人组件。
|
233 |
+
llm_btn.click(respond, inputs=[
|
234 |
+
msg, chatbot, llm, history_len, temperature], outputs=[msg, chatbot], show_progress="minimal")
|
235 |
+
|
236 |
+
# 设置文本框的提交事件(即按下Enter键时)。功能与上面的 llm_btn 按钮点击事件相同。
|
237 |
+
msg.submit(respond, inputs=[
|
238 |
+
msg, chatbot, llm, history_len, temperature], outputs=[msg, chatbot], show_progress="hidden")
|
239 |
+
# 点击后清空后端存储的聊天记录
|
240 |
+
clear.click(model_center.clear_history)
|
241 |
+
gr.Markdown("""提醒:<br>
|
242 |
+
1. 使用时请先上传自己的知识文件,不然将会解析项目自带的知识库。
|
243 |
+
2. 初始化数据库时间可能较长,请耐心等待。
|
244 |
+
3. 使用中如果出现异常,将会在文本输入框进行展示,请不要惊慌。 <br>
|
245 |
+
""")
|
246 |
+
# threads to consume the request
|
247 |
+
gr.close_all()
|
248 |
+
# 启动新的 Gradio 应用,设置分享功能为 True,并使用环境变量 PORT1 指定服务器端口。
|
249 |
+
# demo.launch(share=True, server_port=int(os.environ['PORT1']))
|
250 |
+
# 直接启动
|
251 |
+
demo.launch()
|
serve/sanguo_duel.py
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
from dotenv import load_dotenv
|
3 |
+
import sys
|
4 |
+
import os
|
5 |
+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 添加项目根目录
|
6 |
+
from qa_chain.Chat_QA_chain_self import Chat_QA_chain_self
|
7 |
+
|
8 |
+
# 加载环境变量
|
9 |
+
load_dotenv()
|
10 |
+
|
11 |
+
chat_history:list=[] # 初始化聊天历史记录
|
12 |
+
|
13 |
+
class ChatSystem:
|
14 |
+
def __init__(self):
|
15 |
+
self.chat_chain = Chat_QA_chain_self(
|
16 |
+
model="qwen-max", # 改为阿里通义千问模型
|
17 |
+
temperature=0.7,
|
18 |
+
top_k=4,
|
19 |
+
chat_history=chat_history,
|
20 |
+
persist_path="./vector_db/chroma_sanguo",
|
21 |
+
file_path="./knowledge_db/sanguo_characters",
|
22 |
+
api_key=os.getenv("ali_api_key"), # 使用阿里API Key
|
23 |
+
embedding="m3e",
|
24 |
+
embedding_key=None
|
25 |
+
)
|
26 |
+
|
27 |
+
chat_system = ChatSystem()
|
28 |
+
|
29 |
+
def handle_message(message, chat_history):
|
30 |
+
if not message:
|
31 |
+
return "", chat_history
|
32 |
+
|
33 |
+
# 处理None值:将用户消息中的None转换为空字符串
|
34 |
+
formatted_chat_history = []
|
35 |
+
for item in chat_history:
|
36 |
+
user_msg, ai_msg = item
|
37 |
+
formatted_user_msg = user_msg if user_msg is not None else "" # 关键修改
|
38 |
+
formatted_chat_history.append((formatted_user_msg, ai_msg))
|
39 |
+
|
40 |
+
# 调用问答链获取回复
|
41 |
+
updated_history = chat_system.chat_chain.answer(
|
42 |
+
question=message,
|
43 |
+
chat_history=formatted_chat_history
|
44 |
+
)
|
45 |
+
|
46 |
+
# 转换回列表的列表供Gradio显示
|
47 |
+
return "", [list(item) for item in updated_history]
|
48 |
+
|
49 |
+
with gr.Blocks() as simple_demo:
|
50 |
+
# 使用Row布局水平排列图标和标题(可改为Column垂直排列)
|
51 |
+
with gr.Row(equal_height=True,justify="center"): # equal_height=True保证行内组件高度一致
|
52 |
+
# 加载图标(调整参数保持1:1比例)
|
53 |
+
gr.Image(
|
54 |
+
value="./figures/sanguo.png", # 图标路径
|
55 |
+
scale=0.2, # 控制组件在布局中的占比(1表示与相邻组件等宽)
|
56 |
+
# min_width=60, # 设置最小宽度(根据图标原始尺寸调整)
|
57 |
+
# min_height=60, # 设置最小高度(与min_width相同,保持1:1)
|
58 |
+
width=80, # 固定宽度
|
59 |
+
height=80, # 固定高度
|
60 |
+
show_label=False, # 隐藏标签
|
61 |
+
show_download_button=False, # 隐藏下载按钮
|
62 |
+
container=False # 去除图标外边框
|
63 |
+
)
|
64 |
+
gr.Markdown("## 三国大乱斗系统") # 原标题
|
65 |
+
|
66 |
+
# 初始化带系统介绍的聊天框
|
67 |
+
chatbot = gr.Chatbot(
|
68 |
+
height=600,
|
69 |
+
value=[[None, "欢迎使用三国大乱斗系统!我可以为您提供以下功能:\n1. 角色抽取:随机抽取三国人物卡并展示完整信息\n2. 对战规程介绍:包括回合制规则、技能使用说明等\n3. 实时对战:支持玩家与AI的回合制对战模拟\n请输入您的问题开始交互~"]]
|
70 |
+
)
|
71 |
+
msg = gr.Textbox(label="请输入您的问题")
|
72 |
+
|
73 |
+
with gr.Row():
|
74 |
+
submit_btn = gr.Button("发送")
|
75 |
+
clear_btn = gr.Button("清空对话")
|
76 |
+
|
77 |
+
submit_btn.click(
|
78 |
+
handle_message,
|
79 |
+
inputs=[msg, chatbot],
|
80 |
+
outputs=[msg, chatbot]
|
81 |
+
)
|
82 |
+
clear_btn.click(lambda: [], None, chatbot)
|
83 |
+
|
84 |
+
if __name__ == "__main__":
|
85 |
+
simple_demo.launch()
|
serve/test.ipynb
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 41,
|
6 |
+
"metadata": {},
|
7 |
+
"outputs": [],
|
8 |
+
"source": [
|
9 |
+
"import requests\n",
|
10 |
+
"\n",
|
11 |
+
"url = \"http://127.0.0.1:8000\"\n",
|
12 |
+
"\n",
|
13 |
+
"data = {\n",
|
14 |
+
" \"prompt\":\"什么是蘑菇书(easyrl)?\",\n",
|
15 |
+
" \"api_key\":\"\"\n",
|
16 |
+
"}\n",
|
17 |
+
"\n",
|
18 |
+
"r = requests.post(url, json=data)"
|
19 |
+
]
|
20 |
+
},
|
21 |
+
{
|
22 |
+
"cell_type": "code",
|
23 |
+
"execution_count": 42,
|
24 |
+
"metadata": {},
|
25 |
+
"outputs": [
|
26 |
+
{
|
27 |
+
"data": {
|
28 |
+
"text/plain": [
|
29 |
+
"'\"蘑菇书(easyrl)是一个仓库,内容主要包括李宏毅老师强化学习视频内容、经典资料整理、章节习题、算法实战等,旨在帮助读者学习强化学习并探索人工智能领域。谢谢你的提问!\"'"
|
30 |
+
]
|
31 |
+
},
|
32 |
+
"execution_count": 42,
|
33 |
+
"metadata": {},
|
34 |
+
"output_type": "execute_result"
|
35 |
+
}
|
36 |
+
],
|
37 |
+
"source": [
|
38 |
+
"r.text"
|
39 |
+
]
|
40 |
+
}
|
41 |
+
],
|
42 |
+
"metadata": {
|
43 |
+
"kernelspec": {
|
44 |
+
"display_name": "gpt",
|
45 |
+
"language": "python",
|
46 |
+
"name": "python3"
|
47 |
+
},
|
48 |
+
"language_info": {
|
49 |
+
"codemirror_mode": {
|
50 |
+
"name": "ipython",
|
51 |
+
"version": 3
|
52 |
+
},
|
53 |
+
"file_extension": ".py",
|
54 |
+
"mimetype": "text/x-python",
|
55 |
+
"name": "python",
|
56 |
+
"nbconvert_exporter": "python",
|
57 |
+
"pygments_lexer": "ipython3",
|
58 |
+
"version": "3.10.0"
|
59 |
+
}
|
60 |
+
},
|
61 |
+
"nbformat": 4,
|
62 |
+
"nbformat_minor": 2
|
63 |
+
}
|
split_docs/split_documents.txt
ADDED
@@ -0,0 +1,2006 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
文档 1:
|
3 |
+
--------------------------------------------------
|
4 |
+
角色:刘备
|
5 |
+
攻击力:150
|
6 |
+
防御力:80
|
7 |
+
体力:100
|
8 |
+
耐力:60
|
9 |
+
法力:70
|
10 |
+
闪避:20
|
11 |
+
速度:50
|
12 |
+
技能:
|
13 |
+
- 仁德护体:防御力提升30%,持续2回合,并恢复自身10%体力
|
14 |
+
耐力消耗:5,法力消耗:20
|
15 |
+
- 激将:攻击力提升50%(1回合),且必定命中,但自身防御下降20%
|
16 |
+
耐力消耗:10,法力消耗:25
|
17 |
+
- 遁走:消耗50%耐力强制撤退,本回合闪避率提升至100%(仅生效一次)
|
18 |
+
耐力消耗:8,法力消耗:15
|
19 |
+
|
20 |
+
--------------------------------------------------
|
21 |
+
|
22 |
+
文档 2:
|
23 |
+
--------------------------------------------------
|
24 |
+
角色:诸葛亮
|
25 |
+
攻击力:580
|
26 |
+
防御力:120
|
27 |
+
体力:100
|
28 |
+
耐力:80
|
29 |
+
法力:90
|
30 |
+
闪避:30
|
31 |
+
速度:85
|
32 |
+
技能:
|
33 |
+
- 七星灯:恢复自身30%体力,并提升30%攻击增强,持续2回合
|
34 |
+
耐力消耗:5,法力消耗:30
|
35 |
+
- 火攻计:对单体目标造成150%攻击伤害,并附加灼烧状态(每回合损失1%体力,持续3回合)
|
36 |
+
耐力消耗:3,法力消耗:20
|
37 |
+
- 八卦阵:提升50%防御和20%闪避,持续3回合,必定命中
|
38 |
+
耐力消耗:7,法力消耗:15
|
39 |
+
|
40 |
+
--------------------------------------------------
|
41 |
+
|
42 |
+
文档 3:
|
43 |
+
--------------------------------------------------
|
44 |
+
角色:关羽
|
45 |
+
攻击力:720
|
46 |
+
防御力:160
|
47 |
+
体力:100
|
48 |
+
耐力:85
|
49 |
+
法力:75
|
50 |
+
闪避:35
|
51 |
+
速度:70
|
52 |
+
技能:
|
53 |
+
- 青龙斩:攻击力提升30%,必定命中,攻击附加灼烧状态(每回合降低1%体力)
|
54 |
+
耐力消耗:10,法力消耗:25
|
55 |
+
- 铁壁防御:防御力提升50%,闪避率增加15%(持续2回合)
|
56 |
+
耐力消耗:8,法力消耗:20
|
57 |
+
- 义薄云天:恢复自身20%体力,下一击暴击率提升50%
|
58 |
+
耐力消耗:7,法力消耗:30
|
59 |
+
|
60 |
+
--------------------------------------------------
|
61 |
+
|
62 |
+
文档 4:
|
63 |
+
--------------------------------------------------
|
64 |
+
角色:张飞
|
65 |
+
攻击力:620
|
66 |
+
防御力:160
|
67 |
+
体力:100
|
68 |
+
耐力:80
|
69 |
+
法力:35
|
70 |
+
闪避:15
|
71 |
+
速度:85
|
72 |
+
技能:
|
73 |
+
- 怒吼冲锋:攻击增强30%,持续2回合,并附带必定命中效果
|
74 |
+
耐力消耗:7,法力消耗:20
|
75 |
+
- 铁壁防御:防御力提升50%,并回复自身15%体力,持续1回合
|
76 |
+
耐力消耗:9,法力消耗:15
|
77 |
+
- 烈焰斩:造成150%攻击力的伤害,并使目标进入灼烧状态(每回合损失3%体力,持续3回合)
|
78 |
+
耐力消耗:5,法力消耗:25
|
79 |
+
|
80 |
+
--------------------------------------------------
|
81 |
+
|
82 |
+
文档 5:
|
83 |
+
--------------------------------------------------
|
84 |
+
角色:赵云
|
85 |
+
攻击力:600
|
86 |
+
防御力:150
|
87 |
+
体力:100
|
88 |
+
耐力:80
|
89 |
+
法力:30
|
90 |
+
闪避:25
|
91 |
+
速度:90
|
92 |
+
技能:
|
93 |
+
- 七探盘龙:攻击力提升30%,持续3回合,且必定命中
|
94 |
+
耐力消耗:5,法力消耗:15
|
95 |
+
- 银甲护体:防御力提升40%,持续2回合,并附加30%概率闪避普攻
|
96 |
+
耐力消耗:8,法力消耗:20
|
97 |
+
- 龙胆恢复:恢复自身30%体力,若体力低于50%则额外解除负面状态
|
98 |
+
耐力消耗:10,法力消耗:25
|
99 |
+
|
100 |
+
--------------------------------------------------
|
101 |
+
|
102 |
+
文档 6:
|
103 |
+
--------------------------------------------------
|
104 |
+
角色:黄忠
|
105 |
+
攻击力:620
|
106 |
+
防御力:110
|
107 |
+
体力:100
|
108 |
+
耐力:60
|
109 |
+
法力:40
|
110 |
+
闪避:35
|
111 |
+
速度:85
|
112 |
+
技能:
|
113 |
+
- 百步穿杨:攻击力提升30%,持续3回合(必中)
|
114 |
+
耐力消耗:5,法力消耗:15
|
115 |
+
- 烈弓术:射出火焰箭,造成1.5倍伤害并附加灼烧状态(每回合损失1%体力,持续3回合)
|
116 |
+
耐力消耗:8,法力消耗:25
|
117 |
+
- 鹰眼洞察:闪避率提升20%并解除自身负面状态,持续2回合
|
118 |
+
耐力消耗:3,法力消耗:10
|
119 |
+
|
120 |
+
--------------------------------------------------
|
121 |
+
|
122 |
+
文档 7:
|
123 |
+
--------------------------------------------------
|
124 |
+
角色:马超
|
125 |
+
攻击力:620
|
126 |
+
防御力:110
|
127 |
+
体力:100
|
128 |
+
耐力:85
|
129 |
+
法力:45
|
130 |
+
闪避:38
|
131 |
+
速度:95
|
132 |
+
技能:
|
133 |
+
- 铁骑突袭:对单体目标造成1.5倍伤害,并有30%几率使目标进入灼烧状态(每回合损失1%体力,持续3回合)
|
134 |
+
耐力消耗:7,法力消耗:20
|
135 |
+
- 狼啸破阵:消耗自身10%体力发动强力攻击,本次攻击必定命中且暴击率提升50%,若击杀目标则恢复15%体力
|
136 |
+
耐力消耗:3,法力消耗:25
|
137 |
+
- 西凉战吼:提升自身30%攻击力和20%防御力,持续2回合,并驱散所有负面状态
|
138 |
+
耐力消耗:9,法力消耗:30
|
139 |
+
|
140 |
+
--------------------------------------------------
|
141 |
+
|
142 |
+
文档 8:
|
143 |
+
--------------------------------------------------
|
144 |
+
角色:魏延
|
145 |
+
攻击力:780
|
146 |
+
防御力:160
|
147 |
+
体力:100
|
148 |
+
耐力:85
|
149 |
+
法力:75
|
150 |
+
闪避:30
|
151 |
+
速度:90
|
152 |
+
技能:
|
153 |
+
- 狂骨突进:攻击力提升30%持续2回合,并附带20%暴击率
|
154 |
+
- 铁壁防守:防御力提升50%持续1回合,但自身速度降低20%
|
155 |
+
- 火计连环:消耗灵力释放火焰攻击,造成攻击力120%伤害,目标陷入灼烧状态(每回合损失1%体力,持续3回合)
|
156 |
+
|
157 |
+
--------------------------------------------------
|
158 |
+
|
159 |
+
文档 9:
|
160 |
+
--------------------------------------------------
|
161 |
+
角色:姜维
|
162 |
+
攻击力:450
|
163 |
+
防御力:120
|
164 |
+
体力:100
|
165 |
+
耐力:70
|
166 |
+
法力:60
|
167 |
+
闪避:30
|
168 |
+
速度:80
|
169 |
+
技能:
|
170 |
+
- 麒麟撼地击:攻击增强30%,命中后附带震荡效果(降低目标10%防御力,持续2回合)
|
171 |
+
耐力消耗:5,法力消耗:20
|
172 |
+
- 八卦阵·守:防御增强40%并恢复自身15%体力,持续3回合
|
173 |
+
耐力消耗:8,法力消耗:25
|
174 |
+
- 九伐连矢:释放三波箭雨攻击目标,每波造成60%攻击力伤害,最后一波附带灼烧状态(每回合损失1%体力)
|
175 |
+
耐力消耗:7,法力消耗:30
|
176 |
+
|
177 |
+
--------------------------------------------------
|
178 |
+
|
179 |
+
文档 10:
|
180 |
+
--------------------------------------------------
|
181 |
+
角色:徐庶
|
182 |
+
攻击力:320
|
183 |
+
防御力:85
|
184 |
+
体力:100
|
185 |
+
耐力:68
|
186 |
+
法力:75
|
187 |
+
闪避:15
|
188 |
+
速度:82
|
189 |
+
技能:
|
190 |
+
- 石破天惊:攻击增强30%,持续2回合,并附加灼烧状态(每回合降低目标1%体力)
|
191 |
+
- 观星遁甲:自身防御增强40%,闪避率提升20%,持续3回合
|
192 |
+
- 风卷残云:消耗灵力恢复己方全体15%体力,并附带速度增强15%,持续1回合
|
193 |
+
|
194 |
+
--------------------------------------------------
|
195 |
+
|
196 |
+
文档 11:
|
197 |
+
--------------------------------------------------
|
198 |
+
角色:马良
|
199 |
+
攻击力:600
|
200 |
+
防御力:80
|
201 |
+
体力:100
|
202 |
+
耐力:70
|
203 |
+
法力:65
|
204 |
+
闪避:20
|
205 |
+
速度:85
|
206 |
+
技能:
|
207 |
+
- 神笔天威:攻击力提升50%,持续3回合,必定命中
|
208 |
+
耐力消耗:5,法力消耗:20
|
209 |
+
- 墨守成规:防御力提升50%并附加50%概率闪避,持续2回合
|
210 |
+
耐力消耗:10,法力消耗:25
|
211 |
+
- 画龙点睛:恢复自身30%体力,并使下一击附带灼烧效果(每回合损失1%体力)
|
212 |
+
耐力消耗:8,法力消耗:15
|
213 |
+
|
214 |
+
--------------------------------------------------
|
215 |
+
|
216 |
+
文档 12:
|
217 |
+
--------------------------------------------------
|
218 |
+
角色:费祎
|
219 |
+
攻击力:280
|
220 |
+
防御力:90
|
221 |
+
体力:100
|
222 |
+
耐力:75
|
223 |
+
法力:85
|
224 |
+
闪避:22
|
225 |
+
速度:88
|
226 |
+
技能:
|
227 |
+
- 奇谋妙计:提升自身攻击力30%,持续2回合(必定命中)
|
228 |
+
耐力消耗:7,法力消耗:22
|
229 |
+
- 御敌屏障:生成护盾吸收相当于自身防御力150%的伤害,持续3回合(闪避增强20%)
|
230 |
+
耐力消耗:5,法力消耗:18
|
231 |
+
- 匡世之才:回复全体队友15%体力,移除所有灼烧/中毒状态,自身速度提升20%持续1回合
|
232 |
+
耐力消耗:10,法力消耗:30
|
233 |
+
|
234 |
+
--------------------------------------------------
|
235 |
+
|
236 |
+
文档 13:
|
237 |
+
--------------------------------------------------
|
238 |
+
角色:邓芝
|
239 |
+
攻击力:480
|
240 |
+
防御力:135
|
241 |
+
体力:100
|
242 |
+
耐力:75
|
243 |
+
法力:65
|
244 |
+
闪避:25
|
245 |
+
速度:85
|
246 |
+
技能:
|
247 |
+
- 无双斩:攻击增强30%,必定命中,持续2回合
|
248 |
+
耐力消耗:8,法力消耗:20
|
249 |
+
- 铁壁防御:防御增强50%,并恢复10%体力,持续3回合
|
250 |
+
耐力消耗:12,法力消耗:25
|
251 |
+
- 毒龙破:攻击附加中毒状态(目标攻击降低3%),暴击率提升20%
|
252 |
+
耐力消耗:6,法力消耗:18
|
253 |
+
|
254 |
+
--------------------------------------------------
|
255 |
+
|
256 |
+
文档 14:
|
257 |
+
--------------------------------------------------
|
258 |
+
角色:王平
|
259 |
+
攻击力:580
|
260 |
+
防御力:95
|
261 |
+
体力:100
|
262 |
+
耐力:68
|
263 |
+
法力:75
|
264 |
+
闪避:25
|
265 |
+
速度:82
|
266 |
+
技能:
|
267 |
+
- 破军击:消耗耐力提升50%攻击力,附带30%暴击率,持续1回合
|
268 |
+
耐力消耗:8,法力消耗:25
|
269 |
+
- 铁壁术:吸收30%伤害并反弹10%所受伤害,持续2回合
|
270 |
+
耐力消耗:5,法力消耗:18
|
271 |
+
- 回春术:立即回复15%体力并清除负面状态,获得1回合伤害减免20%
|
272 |
+
耐力消耗:7,法力消耗:22
|
273 |
+
|
274 |
+
--------------------------------------------------
|
275 |
+
|
276 |
+
文档 15:
|
277 |
+
--------------------------------------------------
|
278 |
+
角色:张翼
|
279 |
+
攻击力:420
|
280 |
+
防御力:160
|
281 |
+
体力:100
|
282 |
+
耐力:75
|
283 |
+
法力:60
|
284 |
+
闪避:25
|
285 |
+
速度:90
|
286 |
+
技能:
|
287 |
+
- 破军斩:攻击力提升30%(持续2回合),必定命中,并附加10%概率使目标进入【流血】状态(每回合损失3%体力)
|
288 |
+
耐力消耗:8,法力消耗:25
|
289 |
+
- 玄冥护体:防御力提升50%(持续3回合),30%概率闪避物理攻击
|
290 |
+
耐力消耗:6,法力消耗:18
|
291 |
+
- 九转回天:恢复自身35%体力,清除所有负面状态,并获得【绝对防御】(下回合免疫所有伤害)
|
292 |
+
耐力消耗:10,法力消耗:32
|
293 |
+
|
294 |
+
--------------------------------------------------
|
295 |
+
|
296 |
+
文档 16:
|
297 |
+
--------------------------------------------------
|
298 |
+
角色:马岱
|
299 |
+
攻击力:250
|
300 |
+
防御力:120
|
301 |
+
体力:100
|
302 |
+
耐力:100
|
303 |
+
法力:65
|
304 |
+
闪避:30
|
305 |
+
速度:75
|
306 |
+
技能:
|
307 |
+
- 逆风斩:攻击力提升30%,持续3回合,必定命中
|
308 |
+
耐力消耗:5,法力消耗:15
|
309 |
+
- 铁壁守护:防御力提升50%,持续2回合,并回复自身15%体力
|
310 |
+
耐力消耗:8,法力消耗:25
|
311 |
+
- 毒龙箭:对单体目标造成120%伤害,附加中毒状态(目标攻击力降低3%,持续3回合)
|
312 |
+
耐力消耗:6,法力消耗:20
|
313 |
+
|
314 |
+
--------------------------------------------------
|
315 |
+
|
316 |
+
文档 17:
|
317 |
+
--------------------------------------------------
|
318 |
+
角色:关兴
|
319 |
+
攻击力:420
|
320 |
+
防御力:120
|
321 |
+
体力:100
|
322 |
+
耐力:70
|
323 |
+
法力:50
|
324 |
+
闪避:15
|
325 |
+
速度:80
|
326 |
+
技能:
|
327 |
+
- 青龙斩:攻击力提升30%,持续2回合,必定命中
|
328 |
+
耐力消耗:5,法力消耗:15
|
329 |
+
- 铁壁防御:防御力提升50%,并附带30%概率反弹伤害,持续1回合
|
330 |
+
耐力消耗:8,法力消耗:25
|
331 |
+
- 战意复苏:恢复30%体力并解除所有异常状态,同时获得1次无视防御的攻击机会
|
332 |
+
耐力消耗:10,法力消耗:30
|
333 |
+
|
334 |
+
--------------------------------------------------
|
335 |
+
|
336 |
+
文档 18:
|
337 |
+
--------------------------------------------------
|
338 |
+
角色:张苞
|
339 |
+
攻击力:620
|
340 |
+
防御力:140
|
341 |
+
体力:100
|
342 |
+
耐力:70
|
343 |
+
法力:60
|
344 |
+
闪避:30
|
345 |
+
速度:85
|
346 |
+
技能:
|
347 |
+
- 猛袭冲锋:攻击力提升30%,持续3回合,必定命中
|
348 |
+
耐力消耗:8,法力消耗:20
|
349 |
+
- 铁壁防御:防御力提升50%,并附带30%概率反弹伤害,持续2回合
|
350 |
+
耐力消耗:6,法力消耗:25
|
351 |
+
- 烈焰裂地:造成150%攻击力的范围伤害,目标附带灼烧状态(每回合损失2%体力)
|
352 |
+
耐力消耗:10,法力消耗:30
|
353 |
+
|
354 |
+
--------------------------------------------------
|
355 |
+
|
356 |
+
文档 19:
|
357 |
+
--------------------------------------------------
|
358 |
+
角色:周仓
|
359 |
+
攻击力:720
|
360 |
+
防御力:160
|
361 |
+
体力:100
|
362 |
+
耐力:85
|
363 |
+
法力:60
|
364 |
+
闪避:35
|
365 |
+
速度:90
|
366 |
+
技能:
|
367 |
+
- 猛斧裂地:对单体目标造成150%攻击力的伤害,并有30%概率附加【灼烧】状态(每回合降低1%体力),持续2回合
|
368 |
+
耐力消耗:10,法力消耗:20
|
369 |
+
- 铁壁守护:提升30%防御力,持续3回合,且本技能必定命中
|
370 |
+
耐力消耗:5,法力消耗:15
|
371 |
+
- 战意复苏:恢复自身20%体力,并提升15%闪避率,持续1回合
|
372 |
+
耐力消耗:8,法力消耗:25
|
373 |
+
|
374 |
+
--------------------------------------------------
|
375 |
+
|
376 |
+
文档 20:
|
377 |
+
--------------------------------------------------
|
378 |
+
角色:严颜
|
379 |
+
攻击力:450
|
380 |
+
防御力:120
|
381 |
+
体力:100
|
382 |
+
耐力:75
|
383 |
+
法力:65
|
384 |
+
闪避:15
|
385 |
+
速度:85
|
386 |
+
技能:
|
387 |
+
- 狂战怒吼:攻击力提升40%且必定命中,持续2回合
|
388 |
+
耐力消耗:8,法力消耗:25
|
389 |
+
- 荆棘护体:防御力提升30%并反弹30%伤害,持续3回合
|
390 |
+
耐力消耗:7,法力消耗:18
|
391 |
+
- 蚀骨毒箭:普通攻击附加中毒状态(目标攻击力每回合降低3%),持续5回合
|
392 |
+
耐力消耗:5,法力消耗:12
|
393 |
+
|
394 |
+
--------------------------------------------------
|
395 |
+
|
396 |
+
文档 21:
|
397 |
+
--------------------------------------------------
|
398 |
+
角色:李严
|
399 |
+
攻击力:415
|
400 |
+
防御力:120
|
401 |
+
体力:100
|
402 |
+
耐力:70
|
403 |
+
法力:60
|
404 |
+
闪避:30
|
405 |
+
速度:80
|
406 |
+
技能:
|
407 |
+
- 破军击:攻击力提升30%(持续2回合),必定命中
|
408 |
+
耐力消耗:5,法力消耗:20
|
409 |
+
- 铁壁术:防御力提升50%(持续3回合),并附加30%闪避率
|
410 |
+
耐力消耗:8,法力消耗:15
|
411 |
+
- 焚天诀:消耗当前30%灵力造成双倍伤害,目标陷入灼烧状态(每回合损失1%体力)
|
412 |
+
耐力消耗:10,法力消耗:30
|
413 |
+
|
414 |
+
--------------------------------------------------
|
415 |
+
|
416 |
+
文档 22:
|
417 |
+
--------------------------------------------------
|
418 |
+
角色:曹操
|
419 |
+
攻击力:680
|
420 |
+
防御力:160
|
421 |
+
体力:100
|
422 |
+
耐力:75
|
423 |
+
法力:55
|
424 |
+
闪避:25
|
425 |
+
速度:85
|
426 |
+
技能:
|
427 |
+
- 霸业斩:攻击力提升30%,持续3回合,必定命中
|
428 |
+
耐力消耗:7,法力消耗:20
|
429 |
+
- 铁壁阵:防御力提升50%,并附加30%概率闪避普攻,持续2回合
|
430 |
+
耐力消耗:8,法力消耗:25
|
431 |
+
- 天命复苏:恢复自身30%体力,并净化负面状态
|
432 |
+
耐力消耗:10,法力消耗:30
|
433 |
+
|
434 |
+
--------------------------------------------------
|
435 |
+
|
436 |
+
文档 23:
|
437 |
+
--------------------------------------------------
|
438 |
+
角色:司马懿
|
439 |
+
攻击力:240
|
440 |
+
防御力:160
|
441 |
+
体力:100
|
442 |
+
耐力:75
|
443 |
+
法力:65
|
444 |
+
闪避:25
|
445 |
+
速度:60
|
446 |
+
技能:
|
447 |
+
- 虎豹骑阵:提升自身30%攻击力并附带必定命中,持续2回合
|
448 |
+
耐力消耗:8,法力消耗:20
|
449 |
+
- 奇谋妙计:恢复自身15%体力并提升20%闪避,持续3回合
|
450 |
+
耐力消耗:10,法力消耗:25
|
451 |
+
- 暗影毒计:普通攻击附加中毒状态(目标每回合降低3%攻击力),命中率+15%
|
452 |
+
耐力消耗:5,法力消耗:18
|
453 |
+
|
454 |
+
--------------------------------------------------
|
455 |
+
|
456 |
+
文档 24:
|
457 |
+
--------------------------------------------------
|
458 |
+
角色:夏侯惇
|
459 |
+
攻击力:600
|
460 |
+
防御力:150
|
461 |
+
体力:100
|
462 |
+
耐力:80
|
463 |
+
法力:60
|
464 |
+
闪避:10
|
465 |
+
速度:75
|
466 |
+
技能:
|
467 |
+
- 刚烈:攻击增强30%,持续2回合,且本次攻击必定命中
|
468 |
+
耐力消耗:5,法力消耗:20
|
469 |
+
- 铁壁:防御增强50%,持续1回合,并免疫下一次受到的暴击
|
470 |
+
耐力消耗:8,法力消耗:15
|
471 |
+
- 火攻之计:对单体目标造成攻击力120%的伤害,并附加灼烧状态(每回合损失1%体力,持续3回合)
|
472 |
+
耐力消耗:7,法力消耗:25
|
473 |
+
|
474 |
+
--------------------------------------------------
|
475 |
+
|
476 |
+
文档 25:
|
477 |
+
--------------------------------------------------
|
478 |
+
角色:夏侯渊
|
479 |
+
攻击力:720
|
480 |
+
防御力:150
|
481 |
+
体���:100
|
482 |
+
耐力:85
|
483 |
+
法力:30
|
484 |
+
闪避:15
|
485 |
+
速度:90
|
486 |
+
技能:
|
487 |
+
- 疾风突刺:提升50%攻击力,持续2回合,必定命中
|
488 |
+
耐力消耗:5,法力消耗:15
|
489 |
+
- 铁壁防御:防御力提升100%,并恢复10%体力,持续1回合
|
490 |
+
耐力消耗:10,法力消耗:25
|
491 |
+
- 烈焰斩:造成150%伤害,附加灼烧状态(每回合损失1%体力),暴击率提升20%
|
492 |
+
耐力消耗:8,法力消耗:20
|
493 |
+
|
494 |
+
--------------------------------------------------
|
495 |
+
|
496 |
+
文档 26:
|
497 |
+
--------------------------------------------------
|
498 |
+
角色:张辽
|
499 |
+
攻击力:750
|
500 |
+
防御力:150
|
501 |
+
体力:100
|
502 |
+
耐力:80
|
503 |
+
法力:60
|
504 |
+
闪避:15
|
505 |
+
速度:85
|
506 |
+
技能:
|
507 |
+
- 霸王击:攻击力提升30%,持续2回合,必定命中
|
508 |
+
- 突袭:50%概率触发暴击,若暴击则额外附加目标当前体力5%的真实伤害
|
509 |
+
- 毒龙戟:普通攻击附加中毒状态,使目标攻击力降低3%(可叠加),持续3回合
|
510 |
+
|
511 |
+
--------------------------------------------------
|
512 |
+
|
513 |
+
文档 27:
|
514 |
+
--------------------------------------------------
|
515 |
+
角色:徐晃
|
516 |
+
攻击力:180
|
517 |
+
防御力:120
|
518 |
+
体力:100
|
519 |
+
耐力:100
|
520 |
+
法力:40
|
521 |
+
闪避:30
|
522 |
+
速度:60
|
523 |
+
技能:
|
524 |
+
- 破军之斧:攻击力提升50%,持续2回合,必定命中
|
525 |
+
耐力消耗:5,法力消耗:15
|
526 |
+
- 铁壁防守:防御力提升40%,并附加30%闪避增益,持续3回合
|
527 |
+
耐力消耗:5,法力消耗:20
|
528 |
+
- 焚天怒火:消耗当前50%耐力发动强力攻击(攻击力×200%),目标陷入灼烧状态(每回合损失1%体力),持续2回合
|
529 |
+
耐力消耗:10,法力消耗:25
|
530 |
+
|
531 |
+
--------------------------------------------------
|
532 |
+
|
533 |
+
文档 28:
|
534 |
+
--------------------------------------------------
|
535 |
+
角色:张郃
|
536 |
+
攻击力:420
|
537 |
+
防御力:160
|
538 |
+
体力:100
|
539 |
+
耐力:70
|
540 |
+
法力:65
|
541 |
+
闪避:25
|
542 |
+
速度:75
|
543 |
+
技能:
|
544 |
+
- 磐石守御:防御力提升30%,持续3回合,且必定命中
|
545 |
+
耐力消耗:5,法力消耗:20
|
546 |
+
- 毒牙箭雨:对敌方单体造成120%攻击伤害,并附加中毒状态(目标攻击力每回合降低3%,持续5回合)
|
547 |
+
耐力消耗:8,法力消耗:25
|
548 |
+
- 固本培元:恢复自身30%体力,并提升20%闪避率,持续2回合
|
549 |
+
耐力消耗:10,法力消耗:30
|
550 |
+
|
551 |
+
--------------------------------------------------
|
552 |
+
|
553 |
+
文档 29:
|
554 |
+
--------------------------------------------------
|
555 |
+
角色:许褚
|
556 |
+
攻击力:720
|
557 |
+
防御力:180
|
558 |
+
体力:100
|
559 |
+
耐力:80
|
560 |
+
法力:30
|
561 |
+
闪避:10
|
562 |
+
速度:75
|
563 |
+
技能:
|
564 |
+
- 虎痴怒击:攻击力提升30%,持续3回合,必定命中
|
565 |
+
耐力消耗:5,法力消耗:15
|
566 |
+
- 不动如山:防御力提升50%,并附加30%闪避率,持续2回合
|
567 |
+
耐力消耗:8,法力消耗:25
|
568 |
+
- 嗜血回复:攻击时30%概率恢复自身5%体力,并附加灼烧效果(每回合损失1%体力)
|
569 |
+
耐力消耗:6,法力消耗:20
|
570 |
+
|
571 |
+
--------------------------------------------------
|
572 |
+
|
573 |
+
文档 30:
|
574 |
+
--------------------------------------------------
|
575 |
+
角色:典韦
|
576 |
+
攻击力:720
|
577 |
+
防御力:180
|
578 |
+
体力:100
|
579 |
+
耐力:85
|
580 |
+
法力:40
|
581 |
+
闪避:10
|
582 |
+
速度:65
|
583 |
+
技能:
|
584 |
+
- 无双猛击:攻击力提升30%(持续2回合),必定命中
|
585 |
+
耐力消耗:5,法力消耗:15
|
586 |
+
- 铁壁防御:防御力提升50%(持续3回合),并附加30%闪避率
|
587 |
+
耐力消耗:8,法力消耗:25
|
588 |
+
- 嗜血狂暴:暴击率提升至100%(1回合),攻击附加灼烧状态(每回合损失1%体力)
|
589 |
+
耐力消耗:3,法力消耗:10
|
590 |
+
|
591 |
+
--------------------------------------------------
|
592 |
+
|
593 |
+
文档 31:
|
594 |
+
--------------------------------------------------
|
595 |
+
角色:曹仁
|
596 |
+
攻击力:350
|
597 |
+
防御力:190
|
598 |
+
体力:100
|
599 |
+
耐力:90
|
600 |
+
法力:65
|
601 |
+
闪避:25
|
602 |
+
速度:60
|
603 |
+
技能:
|
604 |
+
- 铁壁防御:防御力提升30%,持续3回合
|
605 |
+
耐力消耗:5,法力消耗:15
|
606 |
+
- 反击阵:30%概率对攻击者造成50%攻击力的反击伤害
|
607 |
+
耐力消耗:10,法力消耗:20
|
608 |
+
- 火攻之计:普通攻击附加灼烧状态,目标每回合损失1%体力,持续3回合
|
609 |
+
耐力消耗:5,法力消耗:25
|
610 |
+
|
611 |
+
--------------------------------------------------
|
612 |
+
|
613 |
+
文档 32:
|
614 |
+
--------------------------------------------------
|
615 |
+
角色:曹洪
|
616 |
+
攻击力:420
|
617 |
+
防御力:130
|
618 |
+
体力:100
|
619 |
+
耐力:65
|
620 |
+
法力:50
|
621 |
+
闪避:25
|
622 |
+
速度:75
|
623 |
+
技能:
|
624 |
+
- 狂战怒吼:攻击力提升30%,持续3回合,且本次攻击必定命中
|
625 |
+
耐力消耗:5,法力消耗:15
|
626 |
+
- 铁壁防御:防御力提升50%,持续2回合,并回复10%体力
|
627 |
+
耐力消耗:8,法力消耗:20
|
628 |
+
- 毒牙击:造成120%攻击力的伤害,附带目标中毒(攻击降低3%),持续3回合
|
629 |
+
耐力消耗:6,法力消耗:25
|
630 |
+
|
631 |
+
--------------------------------------------------
|
632 |
+
|
633 |
+
文档 33:
|
634 |
+
--------------------------------------------------
|
635 |
+
角色:曹真
|
636 |
+
攻击力:650
|
637 |
+
防御力:150
|
638 |
+
体力:100
|
639 |
+
耐力:75
|
640 |
+
法力:60
|
641 |
+
闪避:30
|
642 |
+
速度:80
|
643 |
+
技能:
|
644 |
+
- 雷霆破:攻击力提升30%,持续2回合,必定命中
|
645 |
+
耐力消耗:8,法力消耗:25
|
646 |
+
- 铁壁术:防御��提升50%,并恢复自身15%体力
|
647 |
+
耐力消耗:6,法力消耗:20
|
648 |
+
- 燎原火:对单体造成1.5倍伤害,50%概率使目标进入灼烧状态(每回合损失2%体力)
|
649 |
+
耐力消耗:10,法力消耗:30
|
650 |
+
|
651 |
+
--------------------------------------------------
|
652 |
+
|
653 |
+
文档 34:
|
654 |
+
--------------------------------------------------
|
655 |
+
角色:曹爽
|
656 |
+
攻击力:420
|
657 |
+
防御力:110
|
658 |
+
体力:100
|
659 |
+
耐力:65
|
660 |
+
法力:75
|
661 |
+
闪避:25
|
662 |
+
速度:85
|
663 |
+
技能:
|
664 |
+
- 狂澜斩:攻击力提升30%,持续3回合,必定命中
|
665 |
+
- 毒牙箭:普通攻击附加中毒状态(目标攻击力降低3%),暴击率+15%
|
666 |
+
- 治愈之光:恢复自身35%体力,并提升20%闪避,持续2回合
|
667 |
+
|
668 |
+
--------------------------------------------------
|
669 |
+
|
670 |
+
文档 35:
|
671 |
+
--------------------------------------------------
|
672 |
+
角色:荀彧
|
673 |
+
攻击力:150
|
674 |
+
防御力:80
|
675 |
+
体力:100
|
676 |
+
耐力:70
|
677 |
+
法力:90
|
678 |
+
闪避:25
|
679 |
+
速度:60
|
680 |
+
技能:
|
681 |
+
- 王佐之才:提升自身30%攻击和20%防御,攻击附加中毒状态(降低目标3%攻击)
|
682 |
+
耐力消耗:5,法力消耗:20
|
683 |
+
- 谋定天下:自身闪避率提升50%并加速30%,持续2回合(必中)
|
684 |
+
耐力消耗:6,法力消耗:15
|
685 |
+
- 天命归心:恢复全体队友15%体力并净化负面状态,自身获得1次无敌效果
|
686 |
+
耐力消耗:8,法力消耗:25
|
687 |
+
|
688 |
+
--------------------------------------------------
|
689 |
+
|
690 |
+
文档 36:
|
691 |
+
--------------------------------------------------
|
692 |
+
角色:荀攸
|
693 |
+
攻击力:450
|
694 |
+
防御力:160
|
695 |
+
体力:100
|
696 |
+
耐力:75
|
697 |
+
法力:80
|
698 |
+
闪避:35
|
699 |
+
速度:65
|
700 |
+
技能:
|
701 |
+
- 坚壁:防御力提升30%,持续2回合
|
702 |
+
耐力消耗:5,法力消耗:15
|
703 |
+
- 养精蓄锐:恢复自身30%体力,并解除灼烧/中毒状态
|
704 |
+
耐力消耗:8,法力消耗:20
|
705 |
+
- 火攻之计:对单体造成150%攻击伤害,附加灼烧状态(每回合损失1%体力,持续3回合),必定命中
|
706 |
+
耐力消耗:10,法力消耗:30
|
707 |
+
|
708 |
+
--------------------------------------------------
|
709 |
+
|
710 |
+
文档 37:
|
711 |
+
--------------------------------------------------
|
712 |
+
角色:贾诩
|
713 |
+
攻击力:200
|
714 |
+
防御力:80
|
715 |
+
体力:100
|
716 |
+
耐力:75
|
717 |
+
法力:90
|
718 |
+
闪避:20
|
719 |
+
速度:60
|
720 |
+
技能:
|
721 |
+
- 毒雾术:对敌方全体施加中毒状态,目标攻击力降低3%,持续3回合,必定命中
|
722 |
+
耐力消耗:5,法力消耗:25
|
723 |
+
- 火攻之计:对单体造成150%攻击力的伤害,并附加灼烧状态(每回合损失1%体力),暴击率提升20%
|
724 |
+
耐力消耗:8,法力消耗:30
|
725 |
+
- 奇谋护盾:为自身施加护盾,防御力提升50%持续2回合,同时恢复10%体力
|
726 |
+
耐力消耗:7,法力消耗:20
|
727 |
+
|
728 |
+
--------------------------------------------------
|
729 |
+
|
730 |
+
文档 38:
|
731 |
+
--------------------------------------------------
|
732 |
+
角色:程昱
|
733 |
+
攻击力:320
|
734 |
+
防御力:160
|
735 |
+
体力:100
|
736 |
+
耐力:50
|
737 |
+
法力:80
|
738 |
+
闪避:20
|
739 |
+
速度:60
|
740 |
+
技能:
|
741 |
+
- 谋定乾坤:提升30%攻击力并附加中毒状态(目标攻击力降低3%),持续3回合
|
742 |
+
耐力消耗:7,法力消耗:25
|
743 |
+
- 固本培元:防御力提升50%,闪避率增加15%,持续2回合
|
744 |
+
耐力消耗:8,法力消耗:20
|
745 |
+
- 韬光养晦:恢复自身30%体力并解除所有负面状态,本回合免疫控制
|
746 |
+
耐力消耗:10,法力消耗:35
|
747 |
+
|
748 |
+
--------------------------------------------------
|
749 |
+
|
750 |
+
文档 39:
|
751 |
+
--------------------------------------------------
|
752 |
+
角色:司马师
|
753 |
+
攻击力:320
|
754 |
+
防御力:110
|
755 |
+
体力:100
|
756 |
+
耐力:75
|
757 |
+
法力:85
|
758 |
+
闪避:18
|
759 |
+
速度:65
|
760 |
+
技能:
|
761 |
+
- 谋略之士:提升自身攻击力30%,持续2回合,并有30%概率使目标灼烧(每回合降低1%体力)
|
762 |
+
耐力消耗:8,法力消耗:25
|
763 |
+
- 明镜止水:提升防御力50%,持续3回合,并恢复10%体力
|
764 |
+
耐力消耗:5,法力消耗:20
|
765 |
+
- 幽冥符咒:攻击附加中毒状态(降低目标3%攻击力),持续3回合,必定命中
|
766 |
+
耐力消耗:10,法力消耗:30
|
767 |
+
|
768 |
+
--------------------------------------------------
|
769 |
+
|
770 |
+
文档 40:
|
771 |
+
--------------------------------------------------
|
772 |
+
角色:司马昭
|
773 |
+
攻击力:350
|
774 |
+
防御力:180
|
775 |
+
体力:100
|
776 |
+
耐力:80
|
777 |
+
法力:75
|
778 |
+
闪避:30
|
779 |
+
速度:90
|
780 |
+
技能:
|
781 |
+
- 权谋之刃:攻击力提升30%,持续2回合,并使目标中毒(攻击降低3%)
|
782 |
+
耐力消耗:5,法力消耗:20
|
783 |
+
- 铁壁防线:防御力提升50%,持续3回合,并恢复自身5%体力
|
784 |
+
耐力消耗:8,法力消耗:25
|
785 |
+
- 先机掌握:速度提升40%,持续1回合,下一次攻击必定暴击
|
786 |
+
耐力消耗:7,法力消耗:15
|
787 |
+
|
788 |
+
--------------------------------------------------
|
789 |
+
|
790 |
+
文档 41:
|
791 |
+
--------------------------------------------------
|
792 |
+
角色:乐进
|
793 |
+
攻击力:650
|
794 |
+
防御力:150
|
795 |
+
体力:100
|
796 |
+
耐力:70
|
797 |
+
法力:60
|
798 |
+
闪避:15
|
799 |
+
速度:80
|
800 |
+
技能:
|
801 |
+
- 猛虎击:攻击增强30%,持续3回合,必定命中
|
802 |
+
耐力消耗:5,法力消耗:20
|
803 |
+
- 铁壁术:防御力提升50%,持续2回合
|
804 |
+
耐力消耗:8,法力消耗:15
|
805 |
+
- 烈焰斩:攻击附加灼烧状态(每回合降低1%体力���持续3回合),暴击率提升20%
|
806 |
+
耐力消耗:7,法力消耗:25
|
807 |
+
|
808 |
+
--------------------------------------------------
|
809 |
+
|
810 |
+
文档 42:
|
811 |
+
--------------------------------------------------
|
812 |
+
角色:李典
|
813 |
+
攻击力:720
|
814 |
+
防御力:160
|
815 |
+
体力:100
|
816 |
+
耐力:80
|
817 |
+
法力:60
|
818 |
+
闪避:35
|
819 |
+
速度:75
|
820 |
+
技能:
|
821 |
+
- 崩山裂地:对单体目标造成150%攻击力的伤害,并使自身攻击提升30%(持续2回合),必定命中
|
822 |
+
耐力消耗:10,法力消耗:30
|
823 |
+
- 铁壁护体:提升自身防御力50%(持续3回合),并有30%概率反弹受到的物理伤害
|
824 |
+
耐力消耗:8,法力消耗:25
|
825 |
+
- 战吼:消耗全部灵力,为周围友军恢复15%体力,并提升全体队友15%攻击和速度(持续2回合)
|
826 |
+
耐力消耗:5,法力消耗:35
|
827 |
+
|
828 |
+
--------------------------------------------------
|
829 |
+
|
830 |
+
文档 43:
|
831 |
+
--------------------------------------------------
|
832 |
+
角色:于禁
|
833 |
+
攻击力:520
|
834 |
+
防御力:160
|
835 |
+
体力:100
|
836 |
+
耐力:80
|
837 |
+
法力:70
|
838 |
+
闪避:20
|
839 |
+
速度:60
|
840 |
+
技能:
|
841 |
+
- 坚守防线:防御力提升30%,持续3回合,且必定命中敌人
|
842 |
+
耐力消耗:5,法力消耗:20
|
843 |
+
- 毒刃:普通攻击附带20%概率使目标中毒(每回合降低3%攻击力),持续3回合
|
844 |
+
耐力消耗:3,法力消耗:15
|
845 |
+
- 固本培元:恢复自身30%体力,并提升20%闪避率,持续2回合
|
846 |
+
耐力消耗:10,法力消耗:30
|
847 |
+
|
848 |
+
--------------------------------------------------
|
849 |
+
|
850 |
+
文档 44:
|
851 |
+
--------------------------------------------------
|
852 |
+
角色:文聘
|
853 |
+
攻击力:380
|
854 |
+
防御力:160
|
855 |
+
体力:100
|
856 |
+
耐力:75
|
857 |
+
法力:40
|
858 |
+
闪避:22
|
859 |
+
速度:65
|
860 |
+
技能:
|
861 |
+
- 破军之刺:攻击提升30%,且必定命中,持续1回合
|
862 |
+
耐力消耗:8,法力消耗:15
|
863 |
+
- 固垒坚守:防御提升50%,并附带30%闪避率,持续2回合
|
864 |
+
耐力消耗:6,法力消耗:25
|
865 |
+
- 毒龙穿刺:普通攻击附加目标中毒状态(每秒减少3%攻击力),命中率+20%
|
866 |
+
耐力消耗:5,法力消耗:18
|
867 |
+
|
868 |
+
--------------------------------------------------
|
869 |
+
|
870 |
+
文档 45:
|
871 |
+
--------------------------------------------------
|
872 |
+
角色:郭淮
|
873 |
+
攻击力:180
|
874 |
+
防御力:160
|
875 |
+
体力:100
|
876 |
+
耐力:75
|
877 |
+
法力:50
|
878 |
+
闪避:22
|
879 |
+
速度:65
|
880 |
+
技能:
|
881 |
+
- 壁垒坚守:防御力提升30%,持续2回合,且必定命中攻击者
|
882 |
+
耐力消耗:8,法力消耗:15
|
883 |
+
- 缓兵之计:使自身速度提升20%,并有30%概率闪避物理攻击,持续3回合
|
884 |
+
耐力消耗:6,法力消耗:25
|
885 |
+
- 枯木逢春:恢复自身15%体力,并附加灼烧状态(每回合损失3%体力)给随机敌方单位,持续2回合
|
886 |
+
耐力消耗:10,法力消耗:30
|
887 |
+
|
888 |
+
--------------------------------------------------
|
889 |
+
|
890 |
+
文档 46:
|
891 |
+
--------------------------------------------------
|
892 |
+
角色:孙权
|
893 |
+
攻击力:380
|
894 |
+
防御力:160
|
895 |
+
体力:100
|
896 |
+
耐力:85
|
897 |
+
法力:75
|
898 |
+
闪避:12
|
899 |
+
速度:78
|
900 |
+
技能:
|
901 |
+
- 江东制霸:攻击力提升30%,持续3回合,必定命中
|
902 |
+
耐力消耗:8,法力消耗:25
|
903 |
+
- 铁壁长江:防御力提升50%,并附加闪避增强20%,持续2回合
|
904 |
+
耐力消耗:6,法力消耗:20
|
905 |
+
- 火攻连环:攻击附加灼烧状态(每回合损失1%体力),若暴击则额外降低目标10%防御,持续3回合
|
906 |
+
耐力消耗:9,法力消耗:30
|
907 |
+
|
908 |
+
--------------------------------------------------
|
909 |
+
|
910 |
+
文档 47:
|
911 |
+
--------------------------------------------------
|
912 |
+
角色:周瑜
|
913 |
+
攻击力:320
|
914 |
+
防御力:95
|
915 |
+
体力:100
|
916 |
+
耐力:50
|
917 |
+
法力:75
|
918 |
+
闪避:25
|
919 |
+
速度:70
|
920 |
+
技能:
|
921 |
+
- 烈焰焚天:攻击附加灼烧状态(每回合降低1%体力),暴击率提升20%
|
922 |
+
耐力消耗:8,法力消耗:25
|
923 |
+
- 铁壁连营:防御增强50%并提升闪避率15%,持续2回合
|
924 |
+
耐力消耗:6,法力消耗:18
|
925 |
+
- 东风复苏:恢复自身30%体力并净化负面状态,下回合速度提升30%
|
926 |
+
耐力消耗:7,法力消耗:22
|
927 |
+
|
928 |
+
--------------------------------------------------
|
929 |
+
|
930 |
+
文档 48:
|
931 |
+
--------------------------------------------------
|
932 |
+
角色:鲁肃
|
933 |
+
攻击力:320
|
934 |
+
防御力:180
|
935 |
+
体力:100
|
936 |
+
耐力:50
|
937 |
+
法力:80
|
938 |
+
闪避:20
|
939 |
+
速度:60
|
940 |
+
技能:
|
941 |
+
- 铁壁防御:提升30%防御力,持续3回合
|
942 |
+
耐力消耗:5,法力消耗:20
|
943 |
+
- 治愈之光:恢复自身20%体力(仅限濒危时触发)
|
944 |
+
耐力消耗:3,法力消耗:15
|
945 |
+
- 毒雾术:攻击附加中毒状态(目标攻击力降低3%,持续3回合)
|
946 |
+
耐力消耗:7,法力消耗:25
|
947 |
+
|
948 |
+
--------------------------------------------------
|
949 |
+
|
950 |
+
文档 49:
|
951 |
+
--------------------------------------------------
|
952 |
+
角色:吕蒙
|
953 |
+
攻击力:650
|
954 |
+
防御力:120
|
955 |
+
体力:100
|
956 |
+
耐力:75
|
957 |
+
法力:50
|
958 |
+
闪避:15
|
959 |
+
速度:85
|
960 |
+
技能:
|
961 |
+
- 白衣渡江:攻击增强30%,并附加中毒状态(目标攻击力降低3%),持续3回合
|
962 |
+
耐力消耗:5,法力消耗:20
|
963 |
+
- 江陵固守:防御增强40%,并恢复自身15%体力
|
964 |
+
耐力消耗:10,法力消耗:25
|
965 |
+
- 烽火连营:速度增强50%,下一击必定暴击
|
966 |
+
耐力��耗:8,法力消耗:30
|
967 |
+
|
968 |
+
--------------------------------------------------
|
969 |
+
|
970 |
+
文档 50:
|
971 |
+
--------------------------------------------------
|
972 |
+
角色:陆逊
|
973 |
+
攻击力:580
|
974 |
+
防御力:120
|
975 |
+
体力:100
|
976 |
+
耐力:75
|
977 |
+
法力:85
|
978 |
+
闪避:25
|
979 |
+
速度:85
|
980 |
+
技能:
|
981 |
+
- 火攻之计:造成攻击力120%的伤害,并使目标陷入灼烧状态(每回合降低1%体力,持续3回合)
|
982 |
+
耐力消耗:5,法力消耗:25
|
983 |
+
- 锦囊护体:提升自身防御力50%,持续2回合,并有30%概率闪避下一次攻击
|
984 |
+
耐力消耗:3,法力消耗:15
|
985 |
+
- 调息养神:恢复自身30%体力,并解除灼烧/中毒状态,本回合速度提升20%
|
986 |
+
耐力消耗:8,法力消耗:20
|
987 |
+
|
988 |
+
--------------------------------------------------
|
989 |
+
|
990 |
+
文档 51:
|
991 |
+
--------------------------------------------------
|
992 |
+
角色:太史慈
|
993 |
+
攻击力:720
|
994 |
+
防御力:140
|
995 |
+
体力:100
|
996 |
+
耐力:80
|
997 |
+
法力:60
|
998 |
+
闪避:35
|
999 |
+
速度:85
|
1000 |
+
技能:
|
1001 |
+
- 箭雨风暴:对单体目标造成200%攻击力的物理伤害,并附加灼烧状态(每回合降低1%体力),持续3回合
|
1002 |
+
耐力消耗:8,法力消耗:25
|
1003 |
+
- 铁壁之御:提升自身30%防御力,持续2回合,且必定命中
|
1004 |
+
耐力消耗:5,法力消耗:15
|
1005 |
+
- 野性复苏:恢复自身30%体力,并提升20%闪避率,持续1回合
|
1006 |
+
耐力消耗:10,法力消耗:30
|
1007 |
+
|
1008 |
+
--------------------------------------------------
|
1009 |
+
|
1010 |
+
文档 52:
|
1011 |
+
--------------------------------------------------
|
1012 |
+
角色:甘宁
|
1013 |
+
攻击力:620
|
1014 |
+
防御力:140
|
1015 |
+
体力:100
|
1016 |
+
耐力:80
|
1017 |
+
法力:60
|
1018 |
+
闪避:35
|
1019 |
+
速度:75
|
1020 |
+
技能:
|
1021 |
+
- 锦帆突袭:提升30%攻击力并附带暴击效果,持续2回合
|
1022 |
+
耐力消耗:7,法力消耗:20
|
1023 |
+
- 毒龙破:造成150%伤害并使目标中毒(每回合降低3%攻击力,持续3回合)
|
1024 |
+
耐力消耗:8,法力消耗:25
|
1025 |
+
- 激浪回旋:恢复自身20%体力并提升50%闪避率,持续1回合
|
1026 |
+
耐力消耗:7,法力消耗:30
|
1027 |
+
|
1028 |
+
--------------------------------------------------
|
1029 |
+
|
1030 |
+
文档 53:
|
1031 |
+
--------------------------------------------------
|
1032 |
+
角色:韩当
|
1033 |
+
攻击力:350
|
1034 |
+
防御力:150
|
1035 |
+
体力:100
|
1036 |
+
耐力:75
|
1037 |
+
法力:50
|
1038 |
+
闪避:15
|
1039 |
+
速度:60
|
1040 |
+
技能:
|
1041 |
+
- 猛击:攻击力提升30%,持续3回合,必定命中
|
1042 |
+
耐力消耗:5,法力消耗:15
|
1043 |
+
- 铁壁防御:防御力提升50%,并附加50%概率反弹伤害,持续2回合
|
1044 |
+
耐力消耗:10,法力消耗:25
|
1045 |
+
- 战吼:全队攻击附带灼烧效果(每回合损失1%体力),自身速度提升20%,持续3回合
|
1046 |
+
耐力消耗:8,法力消耗:20
|
1047 |
+
|
1048 |
+
--------------------------------------------------
|
1049 |
+
|
1050 |
+
文档 54:
|
1051 |
+
--------------------------------------------------
|
1052 |
+
角色:周泰
|
1053 |
+
攻击力:680
|
1054 |
+
防御力:170
|
1055 |
+
体力:100
|
1056 |
+
耐力:75
|
1057 |
+
法力:55
|
1058 |
+
闪避:35
|
1059 |
+
速度:85
|
1060 |
+
技能:
|
1061 |
+
- 不屈战意:攻击力提升30%,持续2回合,并附带20%暴击率加成
|
1062 |
+
耐力消耗:8,法力消耗:20
|
1063 |
+
- 铁壁守护:防御力提升50%,同时闪避率增加15%,持续3回合
|
1064 |
+
耐力消耗:5,法力消耗:15
|
1065 |
+
- 浴血重生:消耗当前30%体力值,瞬间恢复等量体力并清除所有负面状态
|
1066 |
+
耐力消耗:10,法力消耗:30
|
1067 |
+
|
1068 |
+
--------------------------------------------------
|
1069 |
+
|
1070 |
+
文档 55:
|
1071 |
+
--------------------------------------------------
|
1072 |
+
角色:潘璋
|
1073 |
+
攻击力:320
|
1074 |
+
防御力:160
|
1075 |
+
体力:100
|
1076 |
+
耐力:85
|
1077 |
+
法力:70
|
1078 |
+
闪避:35
|
1079 |
+
速度:65
|
1080 |
+
技能:
|
1081 |
+
- 钢骨:防御力提升30%,持续3回合
|
1082 |
+
耐力消耗:5,法力消耗:15
|
1083 |
+
- 毒影箭:射程攻击造成120%伤害,附带目标中毒(攻击降低3%),持续2回合
|
1084 |
+
耐力消耗:3,法力消耗:20
|
1085 |
+
- 铁壁守护:防御力提升50%且闪避率+20%,持续2回合,但期间无法主动攻击
|
1086 |
+
耐力消耗:10,法力消耗:25
|
1087 |
+
|
1088 |
+
--------------------------------------------------
|
1089 |
+
|
1090 |
+
文档 56:
|
1091 |
+
--------------------------------------------------
|
1092 |
+
角色:朱然
|
1093 |
+
攻击力:415
|
1094 |
+
防御力:150
|
1095 |
+
体力:100
|
1096 |
+
耐力:75
|
1097 |
+
法力:60
|
1098 |
+
闪避:25.0
|
1099 |
+
速度:85
|
1100 |
+
技能:
|
1101 |
+
- 火龙怒击:攻击力提升50%,暴击率+20%,持续2回合;攻击附带灼烧状态(每回合造成目标当前体力1%的伤害)
|
1102 |
+
耐力消耗:8,法力消耗:25
|
1103 |
+
- 玄甲护体:防御力提升100%,并恢复自身10%体力;若受到攻击,有30%概率反射50%伤害给攻击者
|
1104 |
+
耐力消耗:6,法力消耗:30
|
1105 |
+
- 疾风步:速度提升100%,闪避率+50%,持续1回合;本回合结束时清除所有负面状态
|
1106 |
+
耐力消耗:3,法力消耗:15
|
1107 |
+
|
1108 |
+
--------------------------------------------------
|
1109 |
+
|
1110 |
+
文档 57:
|
1111 |
+
--------------------------------------------------
|
1112 |
+
角色:张昭
|
1113 |
+
攻击力:520
|
1114 |
+
防御力:140
|
1115 |
+
体力:100
|
1116 |
+
耐力:75
|
1117 |
+
法力:60
|
1118 |
+
闪避:25
|
1119 |
+
速度:85
|
1120 |
+
技能:
|
1121 |
+
- 破军击:攻击力提升30%并附带暴击(2回合)
|
1122 |
+
耐力消耗:5,法力消耗:20
|
1123 |
+
- 铁壁术:防御力提升50%并附带30%概率闪避(3回合)
|
1124 |
+
耐力消耗:8,法力消耗:25
|
1125 |
+
- 涅槃之火:恢复自身20%���力,并使下次攻击附加灼烧状态(每回合降低1%体力)
|
1126 |
+
耐力消耗:7,法力消耗:30
|
1127 |
+
|
1128 |
+
--------------------------------------------------
|
1129 |
+
|
1130 |
+
文档 58:
|
1131 |
+
--------------------------------------------------
|
1132 |
+
角色:步骘
|
1133 |
+
攻击力:450
|
1134 |
+
防御力:120
|
1135 |
+
体力:100
|
1136 |
+
耐力:75
|
1137 |
+
法力:85
|
1138 |
+
闪避:30
|
1139 |
+
速度:80
|
1140 |
+
技能:
|
1141 |
+
- 火攻计:对单体目标造成120%攻击力的伤害,并附加灼烧状态(每回合降低1%体力),持续3回合
|
1142 |
+
耐力消耗:5,法力消耗:25
|
1143 |
+
- 镇静仙术:提升自身30%防御力,并增加20%闪避率,持续2回合
|
1144 |
+
耐力消耗:7,法力消耗:20
|
1145 |
+
- 安魂咒:恢复自身25%体力,并解除灼烧/中毒状态
|
1146 |
+
耐力消耗:6,法力消耗:30
|
1147 |
+
|
1148 |
+
--------------------------------------------------
|
1149 |
+
|
1150 |
+
文档 59:
|
1151 |
+
--------------------------------------------------
|
1152 |
+
角色:陆抗
|
1153 |
+
攻击力:750
|
1154 |
+
防御力:150
|
1155 |
+
体力:100
|
1156 |
+
耐力:80
|
1157 |
+
法力:65
|
1158 |
+
闪避:30
|
1159 |
+
速度:85
|
1160 |
+
技能:
|
1161 |
+
- 破军斩:攻击力提升30%,持续3回合,必定命中
|
1162 |
+
耐力消耗:5,法力消耗:20
|
1163 |
+
- 铁壁术:防御力提升50%,并附带30%概率反弹伤害,持续2回合
|
1164 |
+
耐力消耗:8,法力消耗:25
|
1165 |
+
- 毒龙箭:发射毒箭造成120%伤害,目标中毒(每回合降低3%攻击力)持续3回合
|
1166 |
+
耐力消耗:6,法力消耗:15
|
1167 |
+
|
1168 |
+
--------------------------------------------------
|
1169 |
+
|
1170 |
+
文档 60:
|
1171 |
+
--------------------------------------------------
|
1172 |
+
角色:孙策
|
1173 |
+
攻击力:600
|
1174 |
+
防御力:150
|
1175 |
+
体力:100
|
1176 |
+
耐力:80
|
1177 |
+
法力:60
|
1178 |
+
闪避:15
|
1179 |
+
速度:75
|
1180 |
+
技能:
|
1181 |
+
- 霸王咆哮:攻击力提升30%,持续3回合,且必定命中
|
1182 |
+
耐力消耗:5,法力消耗:20
|
1183 |
+
- 铁壁守护:防御力提升50%,持续2回合,并附带30%闪避增强
|
1184 |
+
耐力消耗:8,法力消耗:25
|
1185 |
+
- 烈焰斩:造成150%攻击力的单体伤害,附加灼烧状态(每回合损失1%体力,持续3回合),30%概率触发暴击
|
1186 |
+
耐力消耗:7,法力消耗:15
|
1187 |
+
|
1188 |
+
--------------------------------------------------
|
1189 |
+
|
1190 |
+
文档 61:
|
1191 |
+
--------------------------------------------------
|
1192 |
+
角色:孙尚香
|
1193 |
+
攻击力:350
|
1194 |
+
防御力:80
|
1195 |
+
体力:100
|
1196 |
+
耐力:70
|
1197 |
+
法力:30
|
1198 |
+
闪避:30
|
1199 |
+
速度:90
|
1200 |
+
技能:
|
1201 |
+
- 烈焰箭:攻击增强30%并附加灼烧状态(每回合降低1%体力)
|
1202 |
+
- 凤舞九天:提升自身闪避率20%且速度增加20%,持续2回合
|
1203 |
+
- 治愈之光:恢复自身30%体力并解除灼烧状态
|
1204 |
+
|
1205 |
+
--------------------------------------------------
|
1206 |
+
|
1207 |
+
文档 62:
|
1208 |
+
--------------------------------------------------
|
1209 |
+
角色:大乔
|
1210 |
+
攻击力:320
|
1211 |
+
防御力:90
|
1212 |
+
体力:100
|
1213 |
+
耐力:50
|
1214 |
+
法力:65
|
1215 |
+
闪避:0.15
|
1216 |
+
速度:75
|
1217 |
+
技能:
|
1218 |
+
- 守护之盾:提升30%防御力,持续2回合,必定命中
|
1219 |
+
- 治愈之风:恢复自身25%体力,并附加闪避增强15%持续1回合
|
1220 |
+
- 烈焰之触:攻击附加灼烧状态(每回合损失1%体力),暴击率提升20%持续3回合
|
1221 |
+
|
1222 |
+
--------------------------------------------------
|
1223 |
+
|
1224 |
+
文档 63:
|
1225 |
+
--------------------------------------------------
|
1226 |
+
角色:小乔
|
1227 |
+
攻击力:350
|
1228 |
+
防御力:80
|
1229 |
+
体力:100
|
1230 |
+
耐力:65
|
1231 |
+
法力:90
|
1232 |
+
闪避:35
|
1233 |
+
速度:75
|
1234 |
+
技能:
|
1235 |
+
- 凤求凰:单体攻击附加中毒状态(降低3%攻击),暴击率提升20%
|
1236 |
+
耐力消耗:8,法力消耗:25
|
1237 |
+
- 灵雀屏障:防御力提升30%,闪避率额外增加15%,持续2回合
|
1238 |
+
耐力消耗:5,法力消耗:15
|
1239 |
+
- 治愈之风:恢复自身15%体力并清除负面状态,速度提升20%持续1回合
|
1240 |
+
耐力消耗:10,法力消耗:20
|
1241 |
+
|
1242 |
+
--------------------------------------------------
|
1243 |
+
|
1244 |
+
文档 64:
|
1245 |
+
--------------------------------------------------
|
1246 |
+
角色:诸葛恪
|
1247 |
+
攻击力:320
|
1248 |
+
防御力:160
|
1249 |
+
体力:100
|
1250 |
+
耐力:65
|
1251 |
+
法力:75
|
1252 |
+
闪避:25
|
1253 |
+
速度:85
|
1254 |
+
技能:
|
1255 |
+
- 石兵八阵:召唤石阵提升自身防御50%,持续2回合(必定命中)
|
1256 |
+
耐力消耗:8,法力消耗:25
|
1257 |
+
- 空城抚琴:回复自身15%体力并提升闪避率30%,持续1回合(暴击抗性+30%)
|
1258 |
+
耐力消耗:6,法力消耗:30
|
1259 |
+
- 东风劫火:消耗自身20%当前体力,对单体目标造成1.5倍攻击伤害并附加灼烧状态(每回合损失1.2%体力)
|
1260 |
+
耐力消耗:10,法力消耗:35
|
1261 |
+
|
1262 |
+
--------------------------------------------------
|
1263 |
+
|
1264 |
+
文档 65:
|
1265 |
+
--------------------------------------------------
|
1266 |
+
角色:董卓
|
1267 |
+
攻击力:650
|
1268 |
+
防御力:180
|
1269 |
+
体力:100
|
1270 |
+
耐力:75
|
1271 |
+
法力:50
|
1272 |
+
闪避:20
|
1273 |
+
速度:60
|
1274 |
+
技能:
|
1275 |
+
- 霸者重击:攻击力提升30%,持续3回合(必定命中)
|
1276 |
+
耐力消耗:5,法力消耗:15
|
1277 |
+
- 修罗护体:防御力提升50%,并附加50%概率反弹伤害,持续2回合
|
1278 |
+
耐力消耗:8,法力消耗:25
|
1279 |
+
- 魔血复苏:消耗当前30%体力值,瞬间恢复等量体力(最低保留10%体力)
|
1280 |
+
耐力消耗:10,法力消耗:30
|
1281 |
+
|
1282 |
+
--------------------------------------------------
|
1283 |
+
|
1284 |
+
文档 66:
|
1285 |
+
--------------------------------------------------
|
1286 |
+
角色:吕布
|
1287 |
+
攻击力:780
|
1288 |
+
防御力:160
|
1289 |
+
体力:100
|
1290 |
+
耐力:85
|
1291 |
+
法力:30
|
1292 |
+
闪避:15
|
1293 |
+
速度:90
|
1294 |
+
技能:
|
1295 |
+
- 无双乱舞:对单体目标造成300%攻击的物理伤害,附加灼烧状态(每回合降低1%体力),必定命中
|
1296 |
+
耐力消耗:8,法力消耗:25
|
1297 |
+
- 魔神降世:防御力提升50%,持续3回合,并反击所有攻击者(100%触发)
|
1298 |
+
耐力消耗:6,法力消耗:18
|
1299 |
+
- 赤兔冲锋:速度提升100%持续1回合,本回合攻击附带中毒状态(目标攻击力降低3%)
|
1300 |
+
耐力消耗:10,法力消耗:12
|
1301 |
+
|
1302 |
+
--------------------------------------------------
|
1303 |
+
|
1304 |
+
文档 67:
|
1305 |
+
--------------------------------------------------
|
1306 |
+
角色:貂蝉
|
1307 |
+
攻击力:600
|
1308 |
+
防御力:120
|
1309 |
+
体力:100
|
1310 |
+
耐力:100
|
1311 |
+
法力:80
|
1312 |
+
闪避:35
|
1313 |
+
速度:85
|
1314 |
+
技能:
|
1315 |
+
- 闭月之舞:提升30%闪避率,持续3回合(每回合衰减10%)
|
1316 |
+
耐力消耗:5,法力消耗:20
|
1317 |
+
- 倾城之魅:对单体造成250%攻击力的伤害,并附加【中毒】状态(目标攻击降低3%)持续5回合
|
1318 |
+
耐力消耗:8,法力消耗:25
|
1319 |
+
- 疗伤抚心:恢复自身30%体力,并解除所有负面状态
|
1320 |
+
耐力消耗:6,法力消耗:30
|
1321 |
+
|
1322 |
+
--------------------------------------------------
|
1323 |
+
|
1324 |
+
文档 68:
|
1325 |
+
--------------------------------------------------
|
1326 |
+
角色:袁绍
|
1327 |
+
攻击力:215
|
1328 |
+
防御力:120
|
1329 |
+
体力:100
|
1330 |
+
耐力:70
|
1331 |
+
法力:50
|
1332 |
+
闪避:15
|
1333 |
+
速度:65
|
1334 |
+
技能:
|
1335 |
+
- 霸业雄心:消耗灵力释放王霸之气,2回合内攻击力提升50%且必定命中,自身速度临时+20%
|
1336 |
+
耐力消耗:7,法力消耗:25
|
1337 |
+
- 坚壁清野:凝聚防线形成护盾,3回合内防御力提升80%,并将所受30%伤害转化为耐力消耗
|
1338 |
+
耐力消耗:10,法力消耗:30
|
1339 |
+
- 河北复兴:召唤河北精锐加入战场,全体友军恢复15%体力,自身获得『每回合自动恢复5%耐力』状态持续3回合
|
1340 |
+
耐力消耗:5,法力消耗:20
|
1341 |
+
|
1342 |
+
--------------------------------------------------
|
1343 |
+
|
1344 |
+
文档 69:
|
1345 |
+
--------------------------------------------------
|
1346 |
+
角色:公孙瓒
|
1347 |
+
攻击力:620
|
1348 |
+
防御力:120
|
1349 |
+
体力:100
|
1350 |
+
耐力:80
|
1351 |
+
法力:70
|
1352 |
+
闪避:35
|
1353 |
+
速度:90
|
1354 |
+
技能:
|
1355 |
+
- 白马突袭:攻击增强50%,必定命中,并附加中毒状态(降低目标3%攻击)
|
1356 |
+
耐力消耗:5,法力消耗:20
|
1357 |
+
- 坚壁清野:防御增强50%,持续2回合,并恢复自身10%体力
|
1358 |
+
耐力消耗:8,法力消耗:25
|
1359 |
+
- 烈焰焚营:对前方扇形区域造成120%伤害,附加灼烧状态(每回合降低1%体力)
|
1360 |
+
耐力消耗:7,法力消耗:15
|
1361 |
+
|
1362 |
+
--------------------------------------------------
|
1363 |
+
|
1364 |
+
文档 70:
|
1365 |
+
--------------------------------------------------
|
1366 |
+
角色:刘表
|
1367 |
+
攻击力:550
|
1368 |
+
防御力:160
|
1369 |
+
体力:100
|
1370 |
+
耐力:70
|
1371 |
+
法力:80
|
1372 |
+
闪避:10
|
1373 |
+
速度:65
|
1374 |
+
技能:
|
1375 |
+
- 荆襄固守:防御力提升30%,持续2回合(可叠加)
|
1376 |
+
- 仁政疗伤:恢复自身15%体力并附加【每回合回复5%体力】,持续3回合
|
1377 |
+
- 火攻计略:消耗30%灵力释放火焰箭雨,对敌方全体造成攻击力80%的伤害,并附加【灼烧】状态(每回合损失1%体力)
|
1378 |
+
|
1379 |
+
--------------------------------------------------
|
1380 |
+
|
1381 |
+
文档 71:
|
1382 |
+
--------------------------------------------------
|
1383 |
+
角色:华雄
|
1384 |
+
攻击力:620
|
1385 |
+
防御力:150
|
1386 |
+
体力:100
|
1387 |
+
耐力:70
|
1388 |
+
法力:60
|
1389 |
+
闪避:20
|
1390 |
+
速度:85
|
1391 |
+
技能:
|
1392 |
+
- 狂斧裂地:攻击力提升30%(持续2回合),必定命中
|
1393 |
+
耐力消耗:8,法力消耗:25
|
1394 |
+
- 血怒狂暴:防御力降低40%换取攻击力翻倍(持续3回合),每回合结束时损失当前体力5%
|
1395 |
+
耐力消耗:10,法力消耗:30
|
1396 |
+
- 震雷斩:消耗自身当前30%体力发动强力单体攻击,附带30%概率触发灼烧状态(每回合损失1%体力)
|
1397 |
+
耐力消耗:5,法力消耗:18
|
1398 |
+
|
1399 |
+
--------------------------------------------------
|
1400 |
+
|
1401 |
+
文档 72:
|
1402 |
+
--------------------------------------------------
|
1403 |
+
角色:颜良
|
1404 |
+
攻击力:620
|
1405 |
+
防御力:150
|
1406 |
+
体力:100
|
1407 |
+
耐力:80
|
1408 |
+
法力:30
|
1409 |
+
闪避:10
|
1410 |
+
速度:60
|
1411 |
+
技能:
|
1412 |
+
- 狂暴突袭:攻击力提升50%,持续3回合(必定命中)
|
1413 |
+
- 铁壁防御:防御力提升30%,持续2回合并附带30%概率反弹伤害
|
1414 |
+
- 毒牙裂斩:造成150%攻击力的物理伤害,并使目标中毒(每回合降低3%攻击力,持续3回合)
|
1415 |
+
|
1416 |
+
--------------------------------------------------
|
1417 |
+
|
1418 |
+
文档 73:
|
1419 |
+
--------------------------------------------------
|
1420 |
+
角色:文丑
|
1421 |
+
攻击力:620
|
1422 |
+
防御力:150
|
1423 |
+
体力:100
|
1424 |
+
耐力:70
|
1425 |
+
法力:40
|
1426 |
+
闪避:30
|
1427 |
+
速度:85
|
1428 |
+
技能:
|
1429 |
+
- 霸烈斩:攻击强度提升50%,持续3回合,必定命中
|
1430 |
+
耐力消耗:8,法力消耗:25
|
1431 |
+
- 固守:防御力提升100%,并恢复10%体力,持续2回合
|
1432 |
+
耐力消耗:5,法力消耗:15
|
1433 |
+
- 毒刃:普通攻击附加中毒状态,目标每回合攻击降低3%,持续5回合
|
1434 |
+
耐力消耗:3,法力消耗:10
|
1435 |
+
|
1436 |
+
--------------------------------------------------
|
1437 |
+
|
1438 |
+
文档 74:
|
1439 |
+
--------------------------------------------------
|
1440 |
+
角色:高顺
|
1441 |
+
攻击力:520
|
1442 |
+
防御力:180
|
1443 |
+
体力:100
|
1444 |
+
耐力:80
|
1445 |
+
法力:30
|
1446 |
+
闪避:10
|
1447 |
+
速度:60
|
1448 |
+
技能:
|
1449 |
+
- 坚壁清野:提升30%防御力,持续3回合
|
1450 |
+
耐力消耗:5,法力消耗:20
|
1451 |
+
- 陷阵之志:普通攻击附加中毒状态(目标攻击力降低3%,每回合叠加)
|
1452 |
+
耐力消耗:7,法力消耗:25
|
1453 |
+
- 重整旗鼓:消耗自身30%当前体力,为全队恢复等同数值的体力
|
1454 |
+
耐力消耗:10,法力消耗:30
|
1455 |
+
|
1456 |
+
--------------------------------------------------
|
1457 |
+
|
1458 |
+
文档 75:
|
1459 |
+
--------------------------------------------------
|
1460 |
+
角色:审配
|
1461 |
+
攻击力:200
|
1462 |
+
防御力:150
|
1463 |
+
体力:100
|
1464 |
+
耐力:80
|
1465 |
+
法力:75
|
1466 |
+
闪避:20
|
1467 |
+
速度:60
|
1468 |
+
技能:
|
1469 |
+
- 坚壁清野:防御增强30%,持续2回合
|
1470 |
+
耐力消耗:5,法力消耗:15
|
1471 |
+
- 粮草调度:恢复自身15%体力,并提升闪避10%
|
1472 |
+
耐力消耗:3,法力消耗:20
|
1473 |
+
- 毒计攻心:攻击附加中毒状态(目标攻击降低3%,持续3回合)
|
1474 |
+
耐力消耗:7,法力消耗:25
|
1475 |
+
|
1476 |
+
--------------------------------------------------
|
1477 |
+
|
1478 |
+
文档 76:
|
1479 |
+
--------------------------------------------------
|
1480 |
+
角色:逢纪
|
1481 |
+
攻击力:320
|
1482 |
+
防御力:90
|
1483 |
+
体力:100
|
1484 |
+
耐力:75
|
1485 |
+
法力:85
|
1486 |
+
闪避:25
|
1487 |
+
速度:55
|
1488 |
+
技能:
|
1489 |
+
- 毒雾术:释放毒雾攻击目标,造成110%攻击力的伤害,并使目标中毒(降低3%攻击力,持续3回合)
|
1490 |
+
耐力消耗:7,法力消耗:25
|
1491 |
+
- 天机策:短暂预判战场局势,提升自身30%闪避率和20%速度,持续2回合
|
1492 |
+
耐力消耗:5,法力消耗:20
|
1493 |
+
- 缚魂咒:锁定目标灵魂,接下来3次攻击必定命中且附带灼烧效果(每回合损失2%体力),技能结束后目标陷入眩晕1回合
|
1494 |
+
耐力消耗:10,法力消耗:35
|
1495 |
+
|
1496 |
+
--------------------------------------------------
|
1497 |
+
|
1498 |
+
文档 77:
|
1499 |
+
--------------------------------------------------
|
1500 |
+
角色:郭图
|
1501 |
+
攻击力:480
|
1502 |
+
防御力:120
|
1503 |
+
体力:100
|
1504 |
+
耐力:65
|
1505 |
+
法力:75
|
1506 |
+
闪避:25
|
1507 |
+
速度:85
|
1508 |
+
技能:
|
1509 |
+
- 烈焰击:攻击附加灼烧状态(每回合降低1%体力),必定命中,持续3回合
|
1510 |
+
耐力消耗:7,法力消耗:25
|
1511 |
+
- 八卦阵:防御增强50%,闪避提升20%,持续2回合
|
1512 |
+
- 天机策:速度增强30%,暴击率提升20%,持续5回合
|
1513 |
+
耐力消耗:5,法力消耗:35
|
1514 |
+
|
1515 |
+
--------------------------------------------------
|
1516 |
+
|
1517 |
+
文档 78:
|
1518 |
+
--------------------------------------------------
|
1519 |
+
角色:许攸
|
1520 |
+
攻击力:150
|
1521 |
+
防御力:50
|
1522 |
+
体力:100
|
1523 |
+
耐力:70
|
1524 |
+
法力:85
|
1525 |
+
闪避:20
|
1526 |
+
速度:60
|
1527 |
+
技能:
|
1528 |
+
- 策谋攻势:提升30%攻击力,持续2回合,必定命中
|
1529 |
+
耐力消耗:5,法力消耗:20
|
1530 |
+
- 固守之策:防御力提升50%,并附带30%闪避增强,持续3回合
|
1531 |
+
耐力消耗:10,法力消耗:25
|
1532 |
+
- 火攻之计:造成120%攻击力的伤害,并附加灼烧状态(每回合损失1%体力,持续3回合)
|
1533 |
+
耐力消耗:8,法力消耗:30
|
1534 |
+
|
1535 |
+
--------------------------------------------------
|
1536 |
+
|
1537 |
+
文档 79:
|
1538 |
+
--------------------------------------------------
|
1539 |
+
角色:纪灵
|
1540 |
+
攻击力:600
|
1541 |
+
防御力:120
|
1542 |
+
体力:100
|
1543 |
+
耐力:70
|
1544 |
+
法力:65
|
1545 |
+
闪避:25
|
1546 |
+
速度:80
|
1547 |
+
技能:
|
1548 |
+
- 破军斩:单体攻击造成250%武器伤害,暴击率提升50%
|
1549 |
+
耐力消耗:5,法力消耗:20
|
1550 |
+
- 灵甲护体:防御力提升30%,持续2回合
|
1551 |
+
耐力消耗:8,法力消耗:15
|
1552 |
+
- 焚天怒:对前方扇形区域造成180%武器伤害,并附加灼烧状态(每回合损失1%体力)
|
1553 |
+
耐力消耗:10,法力消耗:30
|
1554 |
+
|
1555 |
+
--------------------------------------------------
|
1556 |
+
|
1557 |
+
文档 80:
|
1558 |
+
--------------------------------------------------
|
1559 |
+
角色:蔡瑁
|
1560 |
+
攻击力:425
|
1561 |
+
防御力:155
|
1562 |
+
体力:100
|
1563 |
+
耐力:80
|
1564 |
+
法力:30
|
1565 |
+
闪避:20
|
1566 |
+
速度:60
|
1567 |
+
技能:
|
1568 |
+
- 铁壁防御:防御力提升30%,持续2回合
|
1569 |
+
耐力消耗:5,法力消耗:15
|
1570 |
+
- 水军整备:恢复自身10%体力,并提升闪避率15%
|
1571 |
+
耐力消耗:10,法力消耗:20
|
1572 |
+
- 毒箭齐射:发射毒箭攻击敌方单体,造成1.2倍伤害并附加中毒状态(目标攻击力每回合降低3%)
|
1573 |
+
耐力消耗:8,法力消耗:25
|
1574 |
+
|
1575 |
+
--------------------------------------------------
|
1576 |
+
|
1577 |
+
文档 81:
|
1578 |
+
--------------------------------------------------
|
1579 |
+
角色:张允
|
1580 |
+
攻击力:542
|
1581 |
+
防御力:115
|
1582 |
+
体力:100
|
1583 |
+
耐力:65
|
1584 |
+
法力:83
|
1585 |
+
闪避:18.5
|
1586 |
+
速度:89
|
1587 |
+
技能:
|
1588 |
+
- 破军斩:攻击力提升50%,持续3回合(必定命中)
|
1589 |
+
耐力消耗:8,法力消耗:25
|
1590 |
+
- 玄冥护体:防御力提升100%,并附加30%闪避率,持续2回合
|
1591 |
+
耐力消耗:6,法力消耗:18
|
1592 |
+
- 燎原火:攻击附带灼烧状态(每回合损失5%体力),自身速度提升20%
|
1593 |
+
耐力消耗:4,法力消耗:30
|
1594 |
+
|
1595 |
+
--------------------------------------------------
|
1596 |
+
|
1597 |
+
文档 82:
|
1598 |
+
--------------------------------------------------
|
1599 |
+
角色:陶谦
|
1600 |
+
攻击力:320
|
1601 |
+
防御力:150
|
1602 |
+
体力:100
|
1603 |
+
耐力:70
|
1604 |
+
法力:60
|
1605 |
+
闪避:30
|
1606 |
+
速度:60
|
1607 |
+
技能:
|
1608 |
+
- 坚守防线:提升30%防御力,持续3回合
|
1609 |
+
耐力消耗:5,法力消耗:20
|
1610 |
+
- 疗伤术:恢复自身20%体力,并解除负面状态
|
1611 |
+
耐力消耗:3,法力消耗:15
|
1612 |
+
- 毒雾侵袭:普通攻击附加中毒状态,目标攻击力每回合降低3%
|
1613 |
+
耐力消耗:8,法力消耗:25
|
1614 |
+
|
1615 |
+
--------------------------------------------------
|
1616 |
+
|
1617 |
+
文档 83:
|
1618 |
+
--------------------------------------------------
|
1619 |
+
角色:刘繇
|
1620 |
+
攻击力:350
|
1621 |
+
防御力:120
|
1622 |
+
体力:100
|
1623 |
+
耐力:60
|
1624 |
+
法力:80
|
1625 |
+
闪避:20
|
1626 |
+
速度:70
|
1627 |
+
技能:
|
1628 |
+
- 破军之击:攻击力提升30%,持续3回合,必中
|
1629 |
+
耐力消耗:5,法力消耗:20
|
1630 |
+
- 固守之阵:防御力提升50%并恢复10%体力,持续2回合
|
1631 |
+
耐力消耗:8,法力消耗:25
|
1632 |
+
- 毒雾侵袭:攻击附加中毒状态(目标攻击力降低3%),持续5回合,命中率+20%
|
1633 |
+
耐力消耗:3,法力消耗:15
|
1634 |
+
|
1635 |
+
--------------------------------------------------
|
1636 |
+
|
1637 |
+
文档 84:
|
1638 |
+
--------------------------------------------------
|
1639 |
+
角色:祝融夫人
|
1640 |
+
攻击力:680
|
1641 |
+
防御力:140
|
1642 |
+
体力:100
|
1643 |
+
耐力:70
|
1644 |
+
法力:60
|
1645 |
+
闪避:25
|
1646 |
+
速度:85
|
1647 |
+
技能:
|
1648 |
+
- 炎龙怒击:对单体目标造成150%攻击力的火焰伤害,并附加灼烧状态(每回合降低1%体力,持续3回合),必定命中
|
1649 |
+
耐力消耗:8,法力消耗:25
|
1650 |
+
- 火神庇护:提升自身30%防御力,持续2回合,并解除负面状态
|
1651 |
+
耐力消耗:5,法力消耗:15
|
1652 |
+
- 凤凰涅槃:恢复自身30%体力,获得闪避增强效果(提升20%闪避率)持续2回合,速度提升20%
|
1653 |
+
耐力消耗:10,法力消耗:30
|
1654 |
+
|
1655 |
+
--------------------------------------------------
|
1656 |
+
|
1657 |
+
文档 85:
|
1658 |
+
--------------------------------------------------
|
1659 |
+
角色:兀突骨
|
1660 |
+
攻击力:200
|
1661 |
+
防御力:190
|
1662 |
+
体力:100
|
1663 |
+
耐力:60
|
1664 |
+
法力:70
|
1665 |
+
闪避:10
|
1666 |
+
速度:40
|
1667 |
+
技能:
|
1668 |
+
- 藤甲防御:防御力提升30%,持续3回合,且受到攻击时30%概率反弹10%伤害
|
1669 |
+
耐力消耗:5,法力消耗:20
|
1670 |
+
- 毒矛反噬:攻击附加中毒状态(目标攻击力降低3%),并使自身闪避率提升20%持续2回合
|
1671 |
+
耐力消耗:8,法力消耗:15
|
1672 |
+
- 血藤恢复:消耗当前30%耐力值转换为体力,并清除负面状态
|
1673 |
+
耐力消耗:10,法力消耗:30
|
1674 |
+
|
1675 |
+
--------------------------------------------------
|
1676 |
+
|
1677 |
+
文档 86:
|
1678 |
+
--------------------------------------------------
|
1679 |
+
角色:木鹿大王
|
1680 |
+
攻击力:520
|
1681 |
+
防御力:160
|
1682 |
+
体力:100
|
1683 |
+
耐力:80
|
1684 |
+
法力:70
|
1685 |
+
闪避:35
|
1686 |
+
速度:65
|
1687 |
+
技能:
|
1688 |
+
- 藤鞭狂舞:攻击力提升30%,持续3回合,必定命中
|
1689 |
+
- 木甲护体:防御力提升50%,并附加30%反弹伤害,持续2回合
|
1690 |
+
- 自然复苏:回复自身20%体力,并清除所有负面状态
|
1691 |
+
|
1692 |
+
--------------------------------------------------
|
1693 |
+
|
1694 |
+
文档 87:
|
1695 |
+
--------------------------------------------------
|
1696 |
+
角色:沙摩柯
|
1697 |
+
攻击力:620
|
1698 |
+
防御力:140
|
1699 |
+
体力:100
|
1700 |
+
耐力:75
|
1701 |
+
法力:55
|
1702 |
+
闪避:35
|
1703 |
+
速度:65
|
1704 |
+
技能:
|
1705 |
+
- 狂斧裂地:攻击力提升30%,持续2回合,且必定命中
|
1706 |
+
耐力消耗:8,法力消耗:20
|
1707 |
+
- 荆棘护体:防御力提升40%并反弹30%所受伤害,持续3回合
|
1708 |
+
耐力消耗:10,法力消耗:25
|
1709 |
+
- 血怒狂暴:消耗当前50%体力值,获得『暴击率+25%』且『攻击附加灼烧状态』,持续到战斗结束
|
1710 |
+
耐力消耗:7,法力消耗:30
|
1711 |
+
|
1712 |
+
--------------------------------------------------
|
1713 |
+
|
1714 |
+
文档 88:
|
1715 |
+
--------------------------------------------------
|
1716 |
+
角色:轲比能
|
1717 |
+
攻击力:680
|
1718 |
+
防御力:140
|
1719 |
+
体力:100
|
1720 |
+
耐力:75
|
1721 |
+
法力:40
|
1722 |
+
闪避:15
|
1723 |
+
速度:85
|
1724 |
+
技能:
|
1725 |
+
- 狼袭猛击:攻击力提升30%,持续3回合,且必定命中
|
1726 |
+
耐力消耗:5,法力消耗:20
|
1727 |
+
- 铁骑防御:防御力提升50%,并附加30%闪避率,持续2回合
|
1728 |
+
耐力消耗:8,法力消耗:25
|
1729 |
+
- 草原之怒:攻击附加灼烧状态(每回合损失1%体力),自身暴击率提升20%,持续3回合
|
1730 |
+
耐力消耗:7,法力消耗:15
|
1731 |
+
|
1732 |
+
--------------------------------------------------
|
1733 |
+
|
1734 |
+
文档 89:
|
1735 |
+
--------------------------------------------------
|
1736 |
+
角色:左慈
|
1737 |
+
攻击力:580
|
1738 |
+
防御力:120
|
1739 |
+
体力:100
|
1740 |
+
耐力:75
|
1741 |
+
法力:85
|
1742 |
+
闪避:25
|
1743 |
+
速度:90
|
1744 |
+
技能:
|
1745 |
+
- 幻光毒雾:对单体目标造成120%攻击力的伤害,并附加中毒状态(每回合降低目标3%攻击力,持续3回合)
|
1746 |
+
耐力消耗:8,法力消耗:25
|
1747 |
+
- 八卦仙衣:提升自身30%防御力,并有50%概率闪避物理攻击,持续2回合
|
1748 |
+
耐力消耗:5,法力消耗:15
|
1749 |
+
- 天地回元:恢复自身30%体力,同时清除所有负面状态,并提升20%灵力伤害,持续1回合
|
1750 |
+
耐力消耗:10,法力消耗:30
|
1751 |
+
|
1752 |
+
--------------------------------------------------
|
1753 |
+
|
1754 |
+
文档 90:
|
1755 |
+
--------------------------------------------------
|
1756 |
+
角色:华佗
|
1757 |
+
攻击力:100
|
1758 |
+
防御力:80
|
1759 |
+
体力:100
|
1760 |
+
耐力:70
|
1761 |
+
法力:90
|
1762 |
+
闪避:40
|
1763 |
+
速度:60
|
1764 |
+
技能:
|
1765 |
+
- 青囊书:恢复自身30%体力,并附带持续2回合的『必定命中』效果
|
1766 |
+
耐力消耗:5,法力消耗:20
|
1767 |
+
- 金针护体:��升己方全体20%防御力,持续3回合,并附加『闪避增强』10%
|
1768 |
+
耐力消耗:5,法力消耗:15
|
1769 |
+
- 麻沸散:驱散自身所有负面状态,并使下次攻击必定触发『暴击』,消耗自身15%体力
|
1770 |
+
耐力消耗:8,法力消耗:25
|
1771 |
+
|
1772 |
+
--------------------------------------------------
|
1773 |
+
|
1774 |
+
文档 91:
|
1775 |
+
--------------------------------------------------
|
1776 |
+
角色:司马徽
|
1777 |
+
攻击力:200
|
1778 |
+
防御力:120
|
1779 |
+
体力:100
|
1780 |
+
耐力:80
|
1781 |
+
法力:90
|
1782 |
+
闪避:35
|
1783 |
+
速度:75
|
1784 |
+
技能:
|
1785 |
+
- 水镜术:提升自身30%攻击力并附加中毒状态(降低目标3%攻击),持续2回合
|
1786 |
+
- 观星诀:防御提升50%,闪避率增加20%,持续3回合
|
1787 |
+
- 天命归元:恢复自身30%体力并净化负面状态,必定命中
|
1788 |
+
|
1789 |
+
--------------------------------------------------
|
1790 |
+
|
1791 |
+
文档 92:
|
1792 |
+
--------------------------------------------------
|
1793 |
+
角色:蔡邕
|
1794 |
+
攻击力:300
|
1795 |
+
防御力:80
|
1796 |
+
体力:100
|
1797 |
+
耐力:75
|
1798 |
+
法力:60
|
1799 |
+
闪避:20
|
1800 |
+
速度:60
|
1801 |
+
技能:
|
1802 |
+
- 文气贯虹:攻击力提升30%,持续3回合,并附带必定命中效果
|
1803 |
+
耐力消耗:8,法力消耗:15
|
1804 |
+
- 护心鉴:防御力提升50%,持续2回合,并附加闪避增强10%
|
1805 |
+
耐力消耗:5,法力消耗:25
|
1806 |
+
- 清音疗愈:恢复自身25%体力,并解除负面状态
|
1807 |
+
耐力消耗:7,法力消耗:20
|
1808 |
+
|
1809 |
+
--------------------------------------------------
|
1810 |
+
|
1811 |
+
文档 93:
|
1812 |
+
--------------------------------------------------
|
1813 |
+
角色:蔡文姬
|
1814 |
+
攻击力:320
|
1815 |
+
防御力:150
|
1816 |
+
体力:100
|
1817 |
+
耐力:75
|
1818 |
+
法力:90
|
1819 |
+
闪避:25
|
1820 |
+
速度:85
|
1821 |
+
技能:
|
1822 |
+
- 胡笳安魂曲:恢复全体队友15%体力,并附加持续2回合的【护盾】(吸收15%伤害)
|
1823 |
+
耐力消耗:8,法力消耗:25
|
1824 |
+
- 悲歌护体:提升自身30%防御力,并使下一次受到的攻击必定触发【闪避】
|
1825 |
+
耐力消耗:5,法力消耗:18
|
1826 |
+
- 断肠焚心:对单体造成180%攻击力的伤害,并附加【灼烧】状态(每回合损失2%体力,持续3回合)
|
1827 |
+
耐力消耗:10,法力消耗:32
|
1828 |
+
|
1829 |
+
--------------------------------------------------
|
1830 |
+
|
1831 |
+
文档 94:
|
1832 |
+
--------------------------------------------------
|
1833 |
+
角色:甄宓
|
1834 |
+
攻击力:320
|
1835 |
+
防御力:80
|
1836 |
+
体力:100
|
1837 |
+
耐力:40
|
1838 |
+
法力:80
|
1839 |
+
闪避:20
|
1840 |
+
速度:60
|
1841 |
+
技能:
|
1842 |
+
- 洛水仙咒:攻击附加中毒状态,目标攻击力降低3%(每回合叠加)
|
1843 |
+
耐力消耗:5,法力消耗:20
|
1844 |
+
- 惊鸿之舞:恢复自身20%体力,并提升30%闪避率,持续2回合
|
1845 |
+
耐力消耗:8,法力消耗:25
|
1846 |
+
- 凌波剑诀:必定命中,造成1.5倍攻击伤害,并使自身防御提升20%,持续1回合
|
1847 |
+
耐力消耗:7,法力消耗:30
|
1848 |
+
|
1849 |
+
--------------------------------------------------
|
1850 |
+
|
1851 |
+
文档 95:
|
1852 |
+
--------------------------------------------------
|
1853 |
+
角色:邹氏
|
1854 |
+
攻击力:450
|
1855 |
+
防御力:90
|
1856 |
+
体力:100
|
1857 |
+
耐力:65
|
1858 |
+
法力:75
|
1859 |
+
闪避:25
|
1860 |
+
速度:70
|
1861 |
+
技能:
|
1862 |
+
- 玄冥冰魄:攻击附加冻结状态(目标速度降低50%,持续2回合),并提升自身暴击率20%
|
1863 |
+
耐力消耗:7,法力消耗:28
|
1864 |
+
- 九转回春术:消耗灵力恢复自身35%体力,并附加持续3回合的毒伤(每回合造成目标最大体力5%的伤害)
|
1865 |
+
耐力消耗:4,法力消耗:32
|
1866 |
+
- 天罡战意:消耗耐力清除自身所有负面状态,提升防御力150%并免疫控制效果,持续3回合
|
1867 |
+
耐力消耗:10,法力消耗:15
|
1868 |
+
|
1869 |
+
--------------------------------------------------
|
1870 |
+
|
1871 |
+
文档 96:
|
1872 |
+
--------------------------------------------------
|
1873 |
+
角色:杜氏
|
1874 |
+
攻击力:450
|
1875 |
+
防御力:120
|
1876 |
+
体力:100
|
1877 |
+
耐力:75
|
1878 |
+
法力:60
|
1879 |
+
闪避:25
|
1880 |
+
速度:85
|
1881 |
+
技能:
|
1882 |
+
- 狂澜斩:攻击力提升30%,持续2回合,必定命中
|
1883 |
+
耐力消耗:5,法力消耗:15
|
1884 |
+
- 铁壁术:防御力提升50%,并附加30%概率闪避普攻,持续3回合
|
1885 |
+
耐力消耗:8,法力消耗:25
|
1886 |
+
- 蚀骨毒:攻击附加中毒状态(目标攻击力每回合降低3%),持续3回合,必中且无视闪避
|
1887 |
+
耐力消耗:3,法力消耗:20
|
1888 |
+
|
1889 |
+
--------------------------------------------------
|
1890 |
+
|
1891 |
+
文档 97:
|
1892 |
+
--------------------------------------------------
|
1893 |
+
角色:王允
|
1894 |
+
攻击力:285
|
1895 |
+
防御力:110
|
1896 |
+
体力:100
|
1897 |
+
耐力:75
|
1898 |
+
法力:68
|
1899 |
+
闪避:25
|
1900 |
+
速度:55
|
1901 |
+
技能:
|
1902 |
+
- 毒计连环:攻击附加中毒状态(目标攻击降低3%,持续3回合)
|
1903 |
+
耐力消耗:8,法力消耗:22
|
1904 |
+
- 智障护体:提升30%防御并强制闪避下一次物理攻击
|
1905 |
+
耐力消耗:6,法力消耗:18
|
1906 |
+
- 连环策攻:必定命中的三段连击(每段伤害为攻击力60%),暴击率提升20%
|
1907 |
+
耐力消耗:10,法力消耗:35
|
1908 |
+
|
1909 |
+
--------------------------------------------------
|
1910 |
+
|
1911 |
+
文档 98:
|
1912 |
+
--------------------------------------------------
|
1913 |
+
角色:李儒
|
1914 |
+
攻击力:580
|
1915 |
+
防御力:140
|
1916 |
+
体力:100
|
1917 |
+
耐力:75
|
1918 |
+
法力:85
|
1919 |
+
闪避:25
|
1920 |
+
速度:65
|
1921 |
+
技能:
|
1922 |
+
- 毒计蚀骨:攻击附加中毒状态,目标每回合降低3%攻击力,持续3回合,必定命中
|
1923 |
+
耐力消耗:7,法力消耗:22
|
1924 |
+
- 固防之策:提升自身30%防御力,持续2回合,并有50%概率闪避下次攻击
|
1925 |
+
耐力消耗:5,法力消耗:18
|
1926 |
+
- 燃血焚心:消耗自身10%体力,对目标造成1.5倍伤害并附加灼烧(每回合损失2%体力),暴击率提升20%
|
1927 |
+
耐力消耗:10,法力消耗:30
|
1928 |
+
|
1929 |
+
--------------------------------------------------
|
1930 |
+
|
1931 |
+
文档 99:
|
1932 |
+
--------------------------------------------------
|
1933 |
+
角色:王朗
|
1934 |
+
攻击力:500
|
1935 |
+
防御力:120
|
1936 |
+
体力:100
|
1937 |
+
耐力:80
|
1938 |
+
法力:60
|
1939 |
+
闪避:25
|
1940 |
+
速度:70
|
1941 |
+
技能:
|
1942 |
+
- 雷霆一击:攻击增强50%,持续3回合,必定命中
|
1943 |
+
耐力消耗:5,法力消耗:20
|
1944 |
+
- 铁壁防御:防御增强80%,持续2回合,并提升30%闪避
|
1945 |
+
耐力消耗:8,法力消耗:15
|
1946 |
+
- 毒雾术:攻击附加中毒状态(目标攻击降低3%),持续5回合,50%概率触发暴击
|
1947 |
+
耐力消耗:3,法力消耗:25
|
1948 |
+
|
1949 |
+
--------------------------------------------------
|
1950 |
+
|
1951 |
+
文档 100:
|
1952 |
+
--------------------------------------------------
|
1953 |
+
角色:钟繇
|
1954 |
+
攻击力:320
|
1955 |
+
防御力:120
|
1956 |
+
体力:100
|
1957 |
+
耐力:75
|
1958 |
+
法力:65
|
1959 |
+
闪避:25
|
1960 |
+
速度:70
|
1961 |
+
技能:
|
1962 |
+
- 墨守千钧:提升自身防御力50%,持续2回合,且有30%概率反弹受到的物理攻击
|
1963 |
+
耐力消耗:8,法力消耗:20
|
1964 |
+
- 浩然笔意:消耗自身30%当前体力值,对单体目标造成1.5倍攻击力的斩杀伤害(若目标体力低于50%则必中)
|
1965 |
+
耐力消耗:5,法力消耗:25
|
1966 |
+
- 文魂护体:回复自身20%体力并清除负面状态,同时获得等同于已损失体力值50%的临时护盾(持续1回合)
|
1967 |
+
耐力消耗:7,法力消耗:18
|
1968 |
+
|
1969 |
+
--------------------------------------------------
|
1970 |
+
|
1971 |
+
文档 101:
|
1972 |
+
--------------------------------------------------
|
1973 |
+
角色:陈群
|
1974 |
+
攻击力:420
|
1975 |
+
防御力:150
|
1976 |
+
体力:100
|
1977 |
+
耐力:75
|
1978 |
+
法力:60
|
1979 |
+
闪避:25
|
1980 |
+
速度:85
|
1981 |
+
技能:
|
1982 |
+
- 烈焰斩:攻击附带灼烧状态(每回合降低目标1%体力),自身暴击率提升20%(持续2回合)
|
1983 |
+
耐力消耗:7,法力消耗:20
|
1984 |
+
- 玄龟护体:防御力提升30%(持续3回合),并必定闪避下一次攻击
|
1985 |
+
耐力消耗:9,法力消耗:25
|
1986 |
+
- 回春术:恢复自身20%体力,并清除所有负面状态
|
1987 |
+
耐力消耗:5,法力消耗:30
|
1988 |
+
|
1989 |
+
--------------------------------------------------
|
1990 |
+
|
1991 |
+
文档 102:
|
1992 |
+
--------------------------------------------------
|
1993 |
+
角色:司马炎
|
1994 |
+
攻击力:320
|
1995 |
+
防御力:160
|
1996 |
+
体力:100
|
1997 |
+
耐力:80
|
1998 |
+
法力:65
|
1999 |
+
闪避:35
|
2000 |
+
速度:75
|
2001 |
+
技能:
|
2002 |
+
- 帝王威仪:提升30%防御力,持续3回合,并强制敌方目标攻击自己(必定命中)
|
2003 |
+
- 晋朝余荫:恢复自身30%最大体力,同时提升20%闪避率,持续2回合
|
2004 |
+
- 山河烬燃:消耗灵力释放范围攻击,对前方敌人造成150%攻击力的灼烧伤害,并附加每回合1%体力流失的灼烧状态,持续3回合
|
2005 |
+
|
2006 |
+
--------------------------------------------------
|
vector_db/chroma/chroma-collections.parquet
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:eb061c8370cbf94fce6e906cab847da748b357c97be495237a5adff38857d12d
|
3 |
+
size 559
|
vector_db/chroma/chroma-embeddings.parquet
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:9730b9b9ef2ed6b2b69654c18420e06152c46c63e8139f6c0448965dd4b5b96f
|
3 |
+
size 6635173
|
vector_db/chroma/index/id_to_uuid_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:93745a94adcf6879d92888621614565c51abb10dc5871744f92d1aadcb5e0dac
|
3 |
+
size 42548
|
vector_db/chroma/index/index_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:b80cccbe66c34e63d56482f1fb2aa1129b642f1f1edca0ad76ae3574b782053f
|
3 |
+
size 4238200
|
vector_db/chroma/index/index_metadata_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:5807817e6627647688439e8f39426c0c1d48c4d4c8597c2a2e8bd023de118d93
|
3 |
+
size 105
|
vector_db/chroma/index/uuid_to_id_cdd98bbd-b458-4fcc-b571-cbc2f817d69f.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:d93af44169ded96268b33b62133634091fa183ca7a46264f60f3fefe1c90a7aa
|
3 |
+
size 49771
|
vector_db/chroma_sanguo/chroma-collections.parquet
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:0ebb1f3c65a22a3b5dd6b2b198e0cd16fbd7f241b28006c2d865327508aeac73
|
3 |
+
size 559
|
vector_db/chroma_sanguo/chroma-embeddings.parquet
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:4f3e90f94d52bf024fc936115261be9ff076dc11b298108895f1d293bc57d1f2
|
3 |
+
size 1948642
|
vector_db/chroma_sanguo/index/id_to_uuid_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:6523fb2bcfe57f3eaa95036ffc65260a4d2266269747254dad646c8c582d51b7
|
3 |
+
size 12941
|
vector_db/chroma_sanguo/index/index_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e132b028da03e62e2fe138e78ed0543ac1c8fc54e38343cea387a391fe0e5570
|
3 |
+
size 1304548
|
vector_db/chroma_sanguo/index/index_metadata_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:641110764d8a60702cbc4b82af63410f5df6e51ea721153d1b70c8188e4a25d9
|
3 |
+
size 105
|
vector_db/chroma_sanguo/index/uuid_to_id_ad3fef11-d2a5-4d10-bf66-f3c882511c7d.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:c3382491670eb3ea6742a578dfddc1247678337f2d0b3e71655c550f45096c33
|
3 |
+
size 15151
|