0%

summary

summary

summary 是一個用於總結文件內容的class,支援多種摘要方法(如 map_reducerefine),可以處理多種格式的文件(如 .txt, .docx, .pdf, .md, .csv, .pptx),並將內容分塊後進行摘要,最終合併成一個完整的摘要。

summary 功能

  1. 多種摘要方法
    • map_reduce:將內容分塊後分別摘要,最後合併成完整摘要,速度較快,適合大規模內容。
    • refine:逐塊摘要並使用前一塊的摘要作為提示,摘要一致性較高,但速度較慢。
  2. 支援多種輸入格式:可處理本地文件、目錄、網址或純文字內容。
  3. 日誌保存:支持保存執行過程與結果的日誌,便於後續分析。

summary 範例

使用 map_reduce 方法進行摘要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import akasha

summ = akasha.summary(
model="openai:gpt-4o",
sum_type="map_reduce",
chunk_size=1000,
sum_len=1000,
language="en",
keep_logs=True,
verbose=True,
max_input_tokens=8000,
)

# 總結內容,來源可以是網址、文件或純文字
ret = summ(content=["https://github.com/iii-org/akasha"])

# 保存日誌
summ.save_logs("sumlog.json")

使用 refine 方法進行摘要

1
2
3
4
5
6
7
8
9
10
11
12
13
summ = akasha.summary(
model="openai:gpt-4o",
sum_type="refine",
chunk_size=1000,
sum_len=500,
language="zh",
keep_logs=True,
verbose=True,
max_input_tokens=8000,
)

# 總結內容,來源可以是本地文件或目錄
ret = summ(content=["docs/example.txt", "docs/reports/"])

summary 參數

初始化參數

model: str

使用的語言模型,例如 "openai:gpt-4o""openai:gpt-3.5-turbo"

sum_type: str

摘要方法,支持:

  • "map_reduce":分塊摘要後合併,速度較快。
  • "refine":逐塊摘要並使用前一塊的摘要作為提示,摘要一致性較高。
sum_len: int

建議的摘要長度(以字數或 token 數計)。

chunk_size: int

分塊大小,單位為字數或 token。

chunk_overlap: int

分塊重疊大小,單位為字數或 token。

max_input_tokens: int

單次輸入模型的最大 token 數。

max_output_tokens: int

模型輸出的最大 token 數。

language: str

內容的語言,支持 "en"(英文)和 "zh"(中文)。

keep_logs: bool

是否保存執行過程與結果的日誌。

verbose: bool

是否顯示詳細的執行過程。

temperature: float

語言模型的隨機性參數,範圍為 0.0 到 1.0。

system_prompt: str

指示語言模型的輸出格式需求。


call 參數

content: Union[str, list, Path, Document]

需要總結的內容,可以是:

  • 單個或多個文件路徑(如 .txt, .docx, .pdf)。
  • 單個或多個網址。
  • 單個或多個純文字內容。
sum_type: str

摘要方法,支持 "map_reduce""refine"

sum_len: int

建議的摘要長度。

chunk_size: int

分塊大小。

chunk_overlap: int

分塊重疊大小。

max_input_tokens: int

單次輸入模型的最大 token 數。

max_output_tokens: int

模型輸出的最大 token 數。

temperature: float

語言模型的隨機性參數。


日誌與結果

  • 總結過程與結果會保存到指定的日誌文件中。
  • 日誌包括摘要的詳細過程、分塊信息、模型輸入輸出 token 數等。

相關連結