mirror of
https://github.com/OpenSPG/KAG.git
synced 2025-11-24 22:31:57 +00:00
* feat(kag): update to v0.7 (#456) * add think cost * update csv scanner * add final rerank * add reasoner * add iterative planner * fix dpr search * fix dpr search * add reference data * move odps import * update requirement.txt * update 2wiki * add missing file * fix markdown reader * add iterative planning * update version * update runner * update 2wiki example * update bridge * merge solver and solver_new * add cur day * writer delete * update multi process * add missing files * fix report * add chunk retrieved executor * update try in stream runner result * add path * add math executor * update hotpotqa example * remove log * fix python coder solver * update hotpotqa example * fix python coder solver * update config * fix bad * add log * remove unused code * commit with task thought * move kag model to common * add default chat llm * fix * use static planner * support chunk graph node * add args * support naive rag * llm client support tool calls * add default async * add openai * fix result * fix markdown reader * fix thinker * update asyncio interface * feat(solver): add mcp support (#444) * 上传mcp client相关代码 * 1、完成一套mcp client的调用,从pipeline到planner、executor 2、允许json中传入多个mcp_server,通过大模型进行调用并选择 3、调通baidu_map_mcp的使用 * 1、schema * bugfix:删减冗余代码 --------- Co-authored-by: wanxingyu.wxy <wanxingyu.wxy@antgroup.com> * fix affairqa after solver refactor * fix affairqa after solver refactor * fix readme * add params * update version * update mcp executor * update mcp executor * solver add mcp executor * add missing file * add mpc executor * add executor * x * update * fix requirement * fix main llm config * fix solver * bugfix:修复invoke函数调用逻辑 * chg eva * update example * add kag layer * add step task * support dot refresh * support dot refresh * support dot refresh * support dot refresh * add retrieved num * add retrieved num * add pipelineconf * update ppr * update musique prompts * update * add to_dict for BuilderComponentData * async build * add deduce prompt * add deduce prompt * add deduce prompt * fix reader * add deduce prompt * add page thinker report * modify prmpt * add step status * add self cognition * add self cognition * add memory graph storage * add now time * update memory config * add now time * chg graph loader * 添加prqa数据集和代码 * bugfix:prqa调用逻辑修复 * optimize:优化代码逻辑,生成答案规范化 * add retry py code * update memory graph * update memory graph * fix * fix ner * add with_out_refer generator prompt * fix * close ckpt * fix query * fix query * update version * add llm checker * add llm checker * 1、上传evalutor.py以及修改gold_answer.json格式 2、优化代码逻辑 3、修改README.md文件 * update exp * update exp * rerank support * add static rewrite query * recall more chunks * fix graph load * add static rewrite query * fix bugs * add finish check * add finish check * add finish check * add finish check * 1、上传evalutor.py的结果 2、优化代码逻辑,优化readme文件 * add lf retry * add memory graph api * fix reader api * add ner * add metrics * fix bug * remove ner * add reraise fo retry * add edge prop to memory graph * add memory graph * 1、评测数据集结果修正 2、优化evaluator.py代码 3、删除结果不存在而gold_answer中有答案的问题 * 删除评测结果文件 * fix knext host addr * async eva * add lf prompt * add lf prompt * add config * add retry * add unknown check * add rc result * add rc result * add rc result * add rc result * 依据kag pipeline格式修改代码逻辑并通过测试 * bugfix:删除冗余代码 * fix report prompt * bugfix:触发重试机制 * bugfix:中文符号错误 * fix rethinker prompt * update version to 0.6.2b78 * update version * 1、修改evaluator.py,通过大模型计算准确率,符合最新调用逻辑 2、修改prompt,让没有回答的结果重复测试 * update affairqa for evaluate * update affairqa for evaluate * bugfix:修正数据集 * bugfix:修正数据集 * bugfix:修正数据集 * fix name conflict * bugfix:删除错误问题 * bugfix:文件名命名错误导致evaluator失败 * update for affairqa eval * bugfix:修改代码保持evaluate逻辑一致 * x * update for affairqa readme * remove temp eval scripts * bugfix for math deduce * merge 0.6.2_dev * merge 0.6.2_dev * fix * update client addr * updated version * update for affairqa eval * evaUtils 支持中文 * fix affairqa eval: * remove unused example * update kag config * fix default value * update readme * fix init * 注释信息修改,并添加部分class说明 * update example config * Tc 0.7.0 (#459) * 提交affairQA 代码 * fix affairqa eval --------- Co-authored-by: zhengke.gzk <zhengke.gzk@antgroup.com> * fix all examples * reformat --------- Co-authored-by: peilong <peilong.zpl@antgroup.com> Co-authored-by: 锦呈 <zhangxinhong.zxh@antgroup.com> Co-authored-by: wanxingyu.wxy <wanxingyu.wxy@antgroup.com> Co-authored-by: zhengke.gzk <zhengke.gzk@antgroup.com> * update chunk metadata * update chunk metadata * add debug reporter * update table text * add server * fix math executor * update api-key for openai vec * update * fix naive rag bug * format code * fix --------- Co-authored-by: zhuzhongshu123 <152354526+zhuzhongshu123@users.noreply.github.com> Co-authored-by: 锦呈 <zhangxinhong.zxh@antgroup.com> Co-authored-by: wanxingyu.wxy <wanxingyu.wxy@antgroup.com> Co-authored-by: zhengke.gzk <zhengke.gzk@antgroup.com>
179 lines
4.5 KiB
Python
179 lines
4.5 KiB
Python
import logging
|
||
from typing import List
|
||
|
||
from kag.common.utils import get_now
|
||
from kag.interface import PromptABC
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
|
||
@PromptABC.register("default_expression_builder")
|
||
class ExpressionBuildr(PromptABC):
|
||
template_zh = (
|
||
f"今天是{get_now(language='zh')}。"
|
||
+ """
|
||
# instruction
|
||
根据给出的问题和数据,编写python代码,输出问题结果。
|
||
从context中提取的数据必须显式赋值,所有计算步骤必须用代码实现,不得隐含推断。
|
||
必须输出中间计算过程和结果,格式为print语句。
|
||
如果context未提供必要数据或无法计算,直接打印"I don't know."
|
||
|
||
# output format
|
||
严格输出以下结构的python代码(版本3.10):
|
||
1. 数据提取部分:代码中涉及输入的数值需要从context及question中提取,不允许进行假设
|
||
2. 计算过程:分步实现所有数学运算,每个步骤对应独立变量
|
||
3. 输出:每个中间变量和最终结果必须用print语句输出
|
||
|
||
# examples
|
||
## 例子1
|
||
### input
|
||
#### question
|
||
4百万元按照日利率万分之1.5,一共612天,计算利息,一共多少钱?
|
||
#### context
|
||
日利率万分之1.5
|
||
### output
|
||
```python
|
||
# 初始本金(单位:百万)
|
||
principal = 4 # 单位:百万
|
||
|
||
# 日利率计算(万分之1.5)
|
||
daily_rate = 1.5 / 10000
|
||
|
||
# 计算周期
|
||
days = 612
|
||
|
||
# 单日利息计算
|
||
daily_interest = principal * daily_rate
|
||
|
||
# 累计利息计算
|
||
total_interest = daily_interest * days
|
||
|
||
# 总金额计算
|
||
total_amount = principal + total_interest
|
||
|
||
print(f"单日利息:{daily_interest:.2f}百万")
|
||
print(f"累计利息:{total_interest:.2f}百万")
|
||
print(f"总金额:{total_amount:.2f}百万")
|
||
```
|
||
|
||
## 例子2
|
||
### input
|
||
#### question
|
||
根据2018年和2019年游戏收入,计算2019年游戏收入增长率;再根据增长率,计算2020年游戏收入
|
||
#### context
|
||
2018年游戏收入是1300万,2019年游戏收入是1580万
|
||
### output
|
||
```python
|
||
# 2018年和2019年的游戏收入(单位:万)
|
||
revenue_2018 = 1300
|
||
revenue_2019 = 1580
|
||
|
||
# 计算2019年的收入增长率
|
||
growth_rate = (revenue_2019 - revenue_2018) / revenue_2018
|
||
print(f"2019年的收入增长率为: {growth_rate * 100:.2f}%")
|
||
|
||
# 根据增长率计算2020年的收入
|
||
revenue_2020 = revenue_2019 * (1 + growth_rate)
|
||
print(f"2020年的预计收入为: {revenue_2020:.2f}万")
|
||
```
|
||
|
||
## 例子3
|
||
### input
|
||
#### question
|
||
47000元按照612天计算利息,本息一共多少钱?
|
||
#### content
|
||
|
||
### output
|
||
```python
|
||
# 未给出利率,无法计算
|
||
print("未给出利率,无法计算")
|
||
```
|
||
# input
|
||
## question
|
||
$question
|
||
## context
|
||
$context
|
||
## error
|
||
$error
|
||
## output
|
||
"""
|
||
)
|
||
template_en = (
|
||
f"Today is {get_now(language='en')}。\n"
|
||
+ """# instruction
|
||
Generate Python code based on the given question and context data to output the result.
|
||
Show extracted data from context, intermediate calculations and final results for clarity.
|
||
Strictly use input content without making assumptions (e.g., if disability grade isn't mentioned, assume no disability).
|
||
Return "I don't know." if question cannot be answered.
|
||
|
||
# output format
|
||
Output only Python 3.8 code without any additional information
|
||
|
||
# examples
|
||
## Example 1
|
||
### input
|
||
#### question
|
||
Calculate interest for 47,000元 at 0.015% daily rate over 612 days
|
||
### output
|
||
```python
|
||
# Initial principal
|
||
principal = 47000
|
||
|
||
# Daily rate (0.015‰)
|
||
rate = 1.5 / 10000
|
||
|
||
# Days
|
||
days = 612
|
||
|
||
# Calculate annual rate
|
||
annual_rate = rate * 365
|
||
|
||
# Calculate interest
|
||
interest = principal * (annual_rate / 365) * days
|
||
|
||
# Calculate total
|
||
total = principal + interest
|
||
|
||
print(f"Total amount: {total:.2f} yuan")
|
||
```
|
||
## Example 2
|
||
### input
|
||
#### question
|
||
Calculate 2019 game revenue growth rate and predict 2020 revenue based on 2018-2019 data
|
||
#### context
|
||
2018 game revenue: 13M, 2019 game revenue: 15.8M
|
||
### output
|
||
```python
|
||
# 2018-2019 revenue (million)
|
||
revenue_2018 = 1300
|
||
revenue_2019 = 1580
|
||
|
||
# Calculate growth rate
|
||
growth_rate = (revenue_2019 - revenue_2018) / revenue_2018
|
||
print(f"Growth rate: {growth_rate*100:.2f}%")
|
||
|
||
# Predict 2020 revenue
|
||
revenue_2020 = revenue_2019 * (1 + growth_rate)
|
||
print(f"2020 projected revenue: {revenue_2020:.2f} million")
|
||
```
|
||
|
||
# input
|
||
## question
|
||
$question
|
||
## context
|
||
$context
|
||
## error
|
||
$error
|
||
"""
|
||
)
|
||
|
||
@property
|
||
def template_variables(self) -> List[str]:
|
||
return ["question", "context", "error"]
|
||
|
||
def parse_response(self, response: str, **kwargs):
|
||
rsp = response
|
||
if isinstance(rsp, str):
|
||
rsp = rsp.strip().strip("```").strip("python")
|
||
return rsp
|