bisheng-langchain 1.3.0__py3-none-any.whl → 1.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bisheng_langchain/gpts/agent_types/llm_react_agent.py +24 -3
- bisheng_langchain/rag/bisheng_rag_tool.py +3 -2
- bisheng_langchain/rag/prompts/prompt.py +9 -3
- bisheng_langchain/utils/azure_dalle_image_generator.py +1 -67
- {bisheng_langchain-1.3.0.dist-info → bisheng_langchain-1.3.1.dist-info}/METADATA +2 -2
- {bisheng_langchain-1.3.0.dist-info → bisheng_langchain-1.3.1.dist-info}/RECORD +8 -8
- {bisheng_langchain-1.3.0.dist-info → bisheng_langchain-1.3.1.dist-info}/WHEEL +0 -0
- {bisheng_langchain-1.3.0.dist-info → bisheng_langchain-1.3.1.dist-info}/top_level.txt +0 -0
@@ -64,7 +64,7 @@ def create_agent_executor(agent_runnable, tools, input_schema=None) -> CompiledS
|
|
64
64
|
The `CompiledStateGraph` object.
|
65
65
|
"""
|
66
66
|
|
67
|
-
tool_executor =
|
67
|
+
tool_executor = {one.name: one for one in tools}
|
68
68
|
|
69
69
|
state = _get_agent_state(input_schema)
|
70
70
|
|
@@ -95,7 +95,18 @@ def create_agent_executor(agent_runnable, tools, input_schema=None) -> CompiledS
|
|
95
95
|
agent_action = data['agent_outcome']
|
96
96
|
if not isinstance(agent_action, list):
|
97
97
|
agent_action = [agent_action]
|
98
|
-
|
98
|
+
|
99
|
+
output = []
|
100
|
+
for action in agent_action:
|
101
|
+
if action.tool not in tool_executor:
|
102
|
+
output.append(f"Tool {action.tool} not found in tool executor.")
|
103
|
+
continue
|
104
|
+
try:
|
105
|
+
result = tool_executor[action.tool].invoke(action.tool_input, config)
|
106
|
+
output.append(result)
|
107
|
+
except Exception as e:
|
108
|
+
output.append(f"invoke tool {action.tool} failed: {str(e)[-50:]}")
|
109
|
+
|
99
110
|
return {
|
100
111
|
'intermediate_steps': [(action, str(out)) for action, out in zip(agent_action, output)]
|
101
112
|
}
|
@@ -105,7 +116,17 @@ def create_agent_executor(agent_runnable, tools, input_schema=None) -> CompiledS
|
|
105
116
|
agent_action = data['agent_outcome']
|
106
117
|
if not isinstance(agent_action, list):
|
107
118
|
agent_action = [agent_action]
|
108
|
-
output =
|
119
|
+
output = []
|
120
|
+
for action in agent_action:
|
121
|
+
if action.tool not in tool_executor:
|
122
|
+
output.append(f"Tool {action.tool} not found in tool executor.")
|
123
|
+
continue
|
124
|
+
try:
|
125
|
+
result = await tool_executor[action.tool].ainvoke(action.tool_input, config)
|
126
|
+
output.append(result)
|
127
|
+
except Exception as e:
|
128
|
+
output.append(f"invoke tool {action.tool} failed: {str(e)[-50:]}")
|
129
|
+
|
109
130
|
return {
|
110
131
|
'intermediate_steps': [(action, str(out)) for action, out in zip(agent_action, output)]
|
111
132
|
}
|
@@ -301,8 +301,9 @@ if __name__ == '__main__':
|
|
301
301
|
description='金融年报财报知识库问答',
|
302
302
|
vector_store=vector_store,
|
303
303
|
keyword_store=keyword_store,
|
304
|
-
llm=llm
|
305
|
-
|
304
|
+
llm=llm,
|
305
|
+
max_content=15000)
|
306
|
+
print(tool.run('能否根据2020年金宇生物技术股份有限公司的年报,给我简要介绍一下报告期内公司的社会责任工作情况?', return_only_outputs=False))
|
306
307
|
|
307
308
|
# tool = BishengRAGTool.get_rag_tool(
|
308
309
|
# name='rag_knowledge_retrieve',
|
@@ -17,9 +17,15 @@ BASE_PROMPT = PromptTemplate(
|
|
17
17
|
)
|
18
18
|
|
19
19
|
|
20
|
-
system_template = """
|
21
|
-
|
22
|
-
|
20
|
+
system_template = """# 任务
|
21
|
+
你是一位知识库问答助手,遵守以下规则回答问题:
|
22
|
+
1. 严谨、专业地回答用户的问题。
|
23
|
+
2. 回答时须严格基于【参考文本】中的内容:
|
24
|
+
- 如果【参考文本】中有明确与用户问题相关的文字内容,请依据相关内容进行回答;如果【参考文本】中没有任何与用户问题相关的内容,则直接回复:“没有找到相关内容”。
|
25
|
+
- 如果相关内容中包含 markdown 格式的图片(例如 ),必须严格保留其原始 markdown 格式,不得添加引号、代码块(`或```)或其他特殊符号,也不得修改图片路径,保证可以正常渲染 markdown 图片。
|
26
|
+
3. 当【参考文本】中的内容来源于多个不同的信息源时,若相关内容存在明显差异或冲突,请分别列出这些差异或冲突的答案;若无差异或冲突,只给出一个统一的回答即可。
|
27
|
+
|
28
|
+
# 参考文本
|
23
29
|
{context}"""
|
24
30
|
messages = [
|
25
31
|
SystemMessagePromptTemplate.from_template(system_template),
|
@@ -60,73 +60,7 @@ class AzureDallEWrapper(DallEAPIWrapper):
|
|
60
60
|
@classmethod
|
61
61
|
def validate_environment(cls, values: Dict) -> Dict:
|
62
62
|
"""Validate that api key and python package exists in environment."""
|
63
|
-
|
64
|
-
# TODO: Remove OPENAI_API_KEY support to avoid possible conflict when using
|
65
|
-
# other forms of azure credentials.
|
66
|
-
openai_api_key = (values['openai_api_key'] or os.getenv('AZURE_OPENAI_API_KEY')
|
67
|
-
or os.getenv('OPENAI_API_KEY'))
|
68
|
-
values['openai_api_key'] = (convert_to_secret_str(openai_api_key)
|
69
|
-
if openai_api_key else None)
|
70
|
-
values['openai_api_base'] = (values['openai_api_base'] if 'openai_api_base' in values else
|
71
|
-
os.getenv('OPENAI_API_BASE'))
|
72
|
-
values['openai_api_version'] = values['openai_api_version'] or os.getenv(
|
73
|
-
'OPENAI_API_VERSION', default='2023-05-15')
|
74
|
-
values['openai_api_type'] = get_from_dict_or_env(values,
|
75
|
-
'openai_api_type',
|
76
|
-
'OPENAI_API_TYPE',
|
77
|
-
default='azure')
|
78
|
-
values['openai_organization'] = (values['openai_organization']
|
79
|
-
or os.getenv('OPENAI_ORG_ID')
|
80
|
-
or os.getenv('OPENAI_ORGANIZATION'))
|
81
|
-
values['openai_proxy'] = get_from_dict_or_env(values,
|
82
|
-
'openai_proxy',
|
83
|
-
'OPENAI_PROXY',
|
84
|
-
default='')
|
85
|
-
values['azure_endpoint'] = values['azure_endpoint'] or os.getenv('AZURE_OPENAI_ENDPOINT')
|
86
|
-
azure_ad_token = values['azure_ad_token'] or os.getenv('AZURE_OPENAI_AD_TOKEN')
|
87
|
-
values['azure_ad_token'] = (convert_to_secret_str(azure_ad_token)
|
88
|
-
if azure_ad_token else None)
|
89
|
-
# For backwards compatibility. Before openai v1, no distinction was made
|
90
|
-
# between azure_endpoint and base_url (openai_api_base).
|
91
|
-
openai_api_base = values['openai_api_base']
|
92
|
-
if openai_api_base and values['validate_base_url']:
|
93
|
-
if '/openai' not in openai_api_base:
|
94
|
-
values['openai_api_base'] += '/openai'
|
95
|
-
raise ValueError('As of openai>=1.0.0, Azure endpoints should be specified via '
|
96
|
-
'the `azure_endpoint` param not `openai_api_base` '
|
97
|
-
'(or alias `base_url`). ')
|
98
|
-
if values['deployment']:
|
99
|
-
raise ValueError('As of openai>=1.0.0, if `deployment` (or alias '
|
100
|
-
'`azure_deployment`) is specified then '
|
101
|
-
'`openai_api_base` (or alias `base_url`) should not be. '
|
102
|
-
'Instead use `deployment` (or alias `azure_deployment`) '
|
103
|
-
'and `azure_endpoint`.')
|
104
|
-
client_params = {
|
105
|
-
'api_version':
|
106
|
-
values['openai_api_version'],
|
107
|
-
'azure_endpoint':
|
108
|
-
values['azure_endpoint'],
|
109
|
-
'azure_deployment':
|
110
|
-
values['deployment'],
|
111
|
-
'api_key':
|
112
|
-
(values['openai_api_key'].get_secret_value() if values['openai_api_key'] else None),
|
113
|
-
'azure_ad_token':
|
114
|
-
(values['azure_ad_token'].get_secret_value() if values['azure_ad_token'] else None),
|
115
|
-
'azure_ad_token_provider':
|
116
|
-
values['azure_ad_token_provider'],
|
117
|
-
'organization':
|
118
|
-
values['openai_organization'],
|
119
|
-
'base_url':
|
120
|
-
values['openai_api_base'],
|
121
|
-
'timeout':
|
122
|
-
values['request_timeout'],
|
123
|
-
'max_retries':
|
124
|
-
values['max_retries'],
|
125
|
-
'default_headers':
|
126
|
-
values['default_headers'],
|
127
|
-
'default_query':
|
128
|
-
values['default_query'],
|
129
|
-
}
|
63
|
+
client_params = values.copy()
|
130
64
|
if not values.get('client'):
|
131
65
|
values['client'] = openai.AzureOpenAI(**client_params).images
|
132
66
|
if not values.get('async_client'):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: bisheng-langchain
|
3
|
-
Version: 1.3.
|
3
|
+
Version: 1.3.1
|
4
4
|
Summary: bisheng langchain modules
|
5
5
|
Home-page: https://github.com/dataelement/bisheng
|
6
6
|
Author: DataElem
|
@@ -24,7 +24,7 @@ Requires-Dist: Pillow==9.5.0
|
|
24
24
|
Requires-Dist: bisheng-pyautogen
|
25
25
|
Requires-Dist: jieba==0.42.1
|
26
26
|
Requires-Dist: pydantic
|
27
|
-
Requires-Dist: pymupdf==1.
|
27
|
+
Requires-Dist: pymupdf==1.26.*
|
28
28
|
Requires-Dist: shapely==2.0.2
|
29
29
|
Requires-Dist: filetype==1.2.0
|
30
30
|
Requires-Dist: langgraph==0.3.*
|
@@ -78,7 +78,7 @@ bisheng_langchain/gpts/message_types.py,sha256=7EJOx62j9E1U67jxWgxE_I7a8IjAvvKAN
|
|
78
78
|
bisheng_langchain/gpts/utils.py,sha256=t3YDxaJ0OYd6EKsek7PJFRYnsezwzEFK5oVU-PRbu5g,6671
|
79
79
|
bisheng_langchain/gpts/agent_types/__init__.py,sha256=88tFt1GfrfIqa4hCg0cMJk7rTeUmCSSdiVhR41CW4rM,381
|
80
80
|
bisheng_langchain/gpts/agent_types/llm_functions_agent.py,sha256=RgWSeeWl5JxEzzyF-336rq9NUDjJcF18LquZe4a-PPY,7126
|
81
|
-
bisheng_langchain/gpts/agent_types/llm_react_agent.py,sha256=
|
81
|
+
bisheng_langchain/gpts/agent_types/llm_react_agent.py,sha256=9StjcRByFIFhaQMgOt0lN9jG0Ne33vCPz2iHVEIJYyg,7311
|
82
82
|
bisheng_langchain/gpts/prompts/__init__.py,sha256=pOnXvk6_PjqAoLrh68sI9o3o6znKGxoLMVFP-0XTCJo,704
|
83
83
|
bisheng_langchain/gpts/prompts/assistant_prompt_base.py,sha256=Yp9M1XbZb5jHeBG_txcwWA84Euvl89t0g-GbJMa5Ur0,1133
|
84
84
|
bisheng_langchain/gpts/prompts/assistant_prompt_cohere.py,sha256=GLQ77oXqSlE7Xes2ObsFsNon5nOJOCRhQOKE5bUpgaI,2421
|
@@ -125,7 +125,7 @@ bisheng_langchain/rag/__init__.py,sha256=Rm_cDxOJINt0H4bOeUo3JctPxaI6xKKXZcS-R_w
|
|
125
125
|
bisheng_langchain/rag/bisheng_rag_chain.py,sha256=75HCIkUAMGrD1E6BaSA9dhnug137PZvDnKUZxihStIE,6149
|
126
126
|
bisheng_langchain/rag/bisheng_rag_pipeline.py,sha256=neoBK3TtuQ07_WeuJCzYlvtsDQNepUa_68NT8VCgytw,13749
|
127
127
|
bisheng_langchain/rag/bisheng_rag_pipeline_v2.py,sha256=iOoF7mbLp9qDGPsV0fEmgph_Ba8VnECYvCPebXk8xmo,16144
|
128
|
-
bisheng_langchain/rag/bisheng_rag_tool.py,sha256=
|
128
|
+
bisheng_langchain/rag/bisheng_rag_tool.py,sha256=MqhGWphTmXsQdTm3QCy0zxJ64I38z1Trz5FFMtQTSh4,13761
|
129
129
|
bisheng_langchain/rag/extract_info.py,sha256=QEFlAaC_9-87dl4BtTz9ciQaQhfE_XjWUnQrwnUfRiw,2215
|
130
130
|
bisheng_langchain/rag/run_qa_gen_web.py,sha256=-fIvHNnD3lD0iNU5m0Me1GDwRjlcsB8tE5RnPtFRG2s,1840
|
131
131
|
bisheng_langchain/rag/run_rag_evaluate_web.py,sha256=a9vMhq-ZhEiHHr43uKUzKtjdk280uAP_UHQW_eOaQMw,2224
|
@@ -144,7 +144,7 @@ bisheng_langchain/rag/init_retrievers/mix_retriever.py,sha256=t65WLFMDEQ8LlbUEG4
|
|
144
144
|
bisheng_langchain/rag/init_retrievers/smaller_chunks_retriever.py,sha256=a_IWcU1zZUndwQW2nXy3DjQA0ct6_7VDGWflY2UEXTI,3774
|
145
145
|
bisheng_langchain/rag/prompts/__init__.py,sha256=IUCq9gzqGQN_6IDk0D_F5t3mOUI_KbmSzYnnXoX4VKE,223
|
146
146
|
bisheng_langchain/rag/prompts/extract_key_prompt.py,sha256=THdcwolRzaKkddgEhabUDytn-caHs9UwECPkPxijWAs,1456
|
147
|
-
bisheng_langchain/rag/prompts/prompt.py,sha256=
|
147
|
+
bisheng_langchain/rag/prompts/prompt.py,sha256=XhMDIrgTwp3pfgMxftxc3XUo7wOjb-3hl_JQfNAMjrI,2695
|
148
148
|
bisheng_langchain/rag/prompts/prompt_cohere.py,sha256=FhW-RCIVnIfKtEqV_-7aQav1riIJmA0jV2hGxCSoysk,8151
|
149
149
|
bisheng_langchain/rag/qa_corpus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
150
150
|
bisheng_langchain/rag/qa_corpus/qa_generator.py,sha256=M8B739ZwwTfF1HXlfTss_pGH38KncJoL9xU0OvEGKCA,6100
|
@@ -160,13 +160,13 @@ bisheng_langchain/retrievers/mix_es_vector.py,sha256=dSrrsuMPSgGiu181EOzACyIKiDX
|
|
160
160
|
bisheng_langchain/sql/__init__.py,sha256=2arRtNQ-kUvIsy_8v_PrLxf5r9W-S7mbqptG_l4_1RE,88
|
161
161
|
bisheng_langchain/sql/base.py,sha256=RQq7BdWroTp2aKzKr_5AMMUaSTxefMJ1DF3r1Rsi0EQ,6162
|
162
162
|
bisheng_langchain/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
163
|
-
bisheng_langchain/utils/azure_dalle_image_generator.py,sha256=
|
163
|
+
bisheng_langchain/utils/azure_dalle_image_generator.py,sha256=QkLXnXYl_onR-uNuMDIcwLx9r4Snn4WuIkyfNFFCLes,2753
|
164
164
|
bisheng_langchain/utils/requests.py,sha256=QSvZQeqL-vfW8dPanJNkeclHt2Gx-Wl9cu7XGaRQzbM,8625
|
165
165
|
bisheng_langchain/vectorstores/__init__.py,sha256=zCZgDe7LyQ0iDkfcm5UJ5NxwKQSRHnqrsjx700Fy11M,213
|
166
166
|
bisheng_langchain/vectorstores/elastic_keywords_search.py,sha256=BxvT9FUTju4AZPtQFTbYLmIIKKw8bqcact5Cav_5H2I,15357
|
167
167
|
bisheng_langchain/vectorstores/milvus.py,sha256=jWq_lce-ihOz07D1kwj5ctPzElYexNCjJ-xSv-pK1CI,37172
|
168
168
|
bisheng_langchain/vectorstores/retriever.py,sha256=fNtk8qSwBo2Qrlt1NpZVXaNATW2tBywkyS0q0NtN5MI,4326
|
169
|
-
bisheng_langchain-1.3.
|
170
|
-
bisheng_langchain-1.3.
|
171
|
-
bisheng_langchain-1.3.
|
172
|
-
bisheng_langchain-1.3.
|
169
|
+
bisheng_langchain-1.3.1.dist-info/METADATA,sha256=AMeyOnK3Iam_Jo-c1fJHu0hFOcw2xseOKREu11xeKVQ,2435
|
170
|
+
bisheng_langchain-1.3.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
171
|
+
bisheng_langchain-1.3.1.dist-info/top_level.txt,sha256=Z6pPNyCo4ihyr9iqGQbH8sJiC4dAUwA_mAyGRQB5_Fs,18
|
172
|
+
bisheng_langchain-1.3.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|