textlong


Nametextlong JSON
Version 0.4.15 PyPI version JSON
download
home_pagehttps://github.com/arcstep/textlong
SummaryA framework designed to produce long-texts with GPT or other large language models.
upload_time2024-08-01 15:39:53
maintainerNone
docs_urlNone
authorarcstep
requires_python<4,>=3.10
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🦜🦜🦜 textlong

[![PyPI version](https://img.shields.io/pypi/v/textlong.svg)](https://pypi.org/project/textlong/)

**textlong** 的目标是基于大语言模型提供结构化的长文本生成能力。

# 优化说明

从 0.4.12 开始,使用较小的模型(例如,阿里云 QWen2 系列 0.5B/1.5B/7B/57B/72B 等)都已经可以获得较好生成效果。

# 《textlong 使用指南》

## 1 环境准备

### 1.1 使用 dotenv 管理环境变量

将 APIKEY 和项目配置保存到`.env`文件,再加载到进程的环境变量中,这是很好的实践策略。

这需要使用 dotenv 包,它可以帮助我们管理项目中的环境变量。

创建和配置`.env`文件,你需要在你项目的根目录下创建一个名为`.env`的文件(注意,文件名以点开始)。在这个文件中,你可以定义你的环境变量,例如:

```
ZHIPUAI_API_KEY="你的智谱AI API密钥"
TEXTLONG_FOLDER="你的项目目录"
```

为此,你可能需要先安装 python-dotenv 包:

```bash
pip install python-dotenv
```

然后在 Python 代码中,使用以下代码片段来加载`.env`文件中的环境变量:

```python
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv(), override=True)
```

### 1.2 申请大语言模型

当你决定申请大语言模型服务时,可以选择美国公司如 OpenAI 或 Claude 提供的服务,也可以选择中国的智谱 AI 等国内服务。这些服务通常都会提供详细的申请流程指引。申请过程中,你需要填写相关信息,并按照指引完成相应的步骤。成功申请后,你会获得一个 API_KEY,这是你调用这些大语言模型服务的唯一凭证。

获得 API_KEY 后,为了确保其安全性和便捷性,你应该将其配置到项目根目录下的`.env`文件中,例如:

**你的.env 文件**

```
ZHIPUAI_API_KEY="YOUR_API_KEY_NAME"
```

这种方式不仅能保护你的敏感信息,还能让你的代码更加整洁、易于管理。

## 2 textlong 的安装与加载

### 2.1 安装 textlong 包

在 Python 中安装 textlong 包非常简单,以下命令会尝试安装最新版本的 textlong:

```sh
pip install textlong
```

为了确保安装的是最新版本,可以在命令中添加`--upgrade`选项,如下:

```sh
pip install --upgrade textlong
```

## 3 使用 textlong 创作长文

### 3.1 在 jupyter 环境中使用 textlong

**安装 JupyterLab**

在使用 textlong 之前,首先需要确保你的环境中安装了 JupyterLab。JupyterLab 是一个交互式的开发环境,非常适合进行数据分析和机器学习项目。你可以通过以下命令安装 JupyterLab:

```sh
pip install jupyterlab
```

安装完成后,可以通过运行以下命令来启动 JupyterLab:

```sh
jupyter-lab
```

**建立笔记**

在新的笔记中,首先需要导入 textlong 包。在进行导入之前,请确保已经按照前面的步骤正确安装了 textlong 包:

首先,加载你的环境变量,这样你就可以安全地访问 API 密钥:

```python
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv(), override=True)
```

接下来,导入 textlong 包和所需的模型:

```python
from textlong import Project
from langchain_zhipu import ChatZhipuAI
```

现在,你可以初始化一个 Project 对象,如下所示:

```python
p = Project(ChatZhipuAI(model="glm-4"), project_id="demo")
p
```

这里`project_id`是你为 textlong 项目指定的唯一标识符。确保你使用的是正确的 API 模型名称和项目 ID。

恭喜你,现在可以使用 textlong 包来创作长文了!

### 3.2 创作提纲

从一个简单的例子开始,假设我们要创作的是一部 10000 字的修仙小说,标题为《我修了个假仙》,主角是夏小兰,男一号是周成,每个章节都将以意外和打脸的线索推动情节。

接下来,使用 textlong 的`outline`方法来创建提纲。

```python
task = "请帮我创作10000字的修仙小说,标题为《我修了个假仙》,主角是夏小兰,男一号是周成,每一个章节都适用意外、打脸的线索推动。"
p.outline("提纲.md", task)
```

当你运行上述代码后,textlong 会根据你的任务描述自动生成一份提纲。提纲将包括小说的章节划分和每个章节的关键情节。你可以根据这个提纲来进行文章的扩写。

生成的结果如下:

```md
# 《我修了个假仙》

## 第一章:星辰之女的觉醒

<OUTLINE>
夏小兰一直被认为拥有神秘力量,却在一次意外中被揭露出她的能力并不如外界传言那般强大,实际上她修了个“假仙”。这次觉醒让她在村中受尽白眼,决心踏上寻找真正修仙之道的旅程。

扩写要求:

- 预估字数:1000
- 创意要点:意外揭露,能力不足,决心追求真相
- 创作思路:通过主角的失落和觉醒,引出后续成长和冒险
- 涉及实体名称:夏小兰,星辰之女

</OUTLINE>

...
```

### 3.3 文章扩写

接下来,是根据提纲扩写:

```python
p.from_outline(
    output_file="我修了个假仙人.md",
    input="提纲.md"
)
```

运行上述代码,textlong 将根据“提纲.md”中的结构,生成一篇名为“我修了个假仙人.md”的文章初稿。

也许你希望对生成的文章进行微调,以更好地符合你的创作风格或文章需求。
为此,你可以像下面这样调整`from_outline`方法的参数:

```python
p.from_outline(
    output_file="我修了个假仙人.md",
    input="提纲.md",
    task="多使用人物细节、对话描写、打斗描写,减少抽象叙事"
)
```

在这个调整后的代码中,我们添加了一个额外的参数`task`,用于指导 AI 在生成文章时要特别关注的方面。这样,生成的文章将包含更多的人物细节、对话和打斗描写,同时减少抽象的叙述。

生成结果如下:

```md
# 《我修了个假仙》

## 第一章:星辰之女的觉醒

夏小兰,一直被村民视为拥有神秘力量的星辰之女。然而,在那次意外中,她的真实能力被揭穿,原来她修了个“假仙”。村中的嘲笑与白眼,让她痛不欲生。夏小兰站在村口,紧握双拳,眼中闪过坚定:“我一定要找到真正的修仙之道,证明给所有人看!”

那天,阳光透过云层洒在她的脸上,仿佛预示着她即将踏上的艰难旅程。夏小兰迈开坚定的步伐,离开这个让她充满失落的地方,去寻找属于自己的真相。

...
```

### 3.4 引用素材管理

可能你希望在创作过程中,在每个步骤都共享一些知识,例如在创作长篇小说时的人物设定。

你可以先使用用`idea`方法生成关于小说人物的设定:

```python
task = "我要写一个修仙小说,主角是夏小兰,男一号是周成,请帮我设想一下这两个人的出身,要非常魔幻。"
p.idea("人物设定.md", task)
```

接下来,通过`from_outline`方法中的`knowledge`参数来引用它们。如下示例:

```python
p.from_outline(
    output_file="我修了个假仙人.md",
    input="提纲.md",
    task="多使用人物细节、对话描写、打斗描写,减少抽象叙事",
    knowledge=["人物设定.md"]
)
```

注意,`idea`、`outline`等方法中同样可以使用`knowledge`参数。

## 4 一键直出

你在上述项目中使用过的方法都已经被日志记录,因此可以通过`save_script`将你手工执行过的动作保存到 `project_script.yml`脚本文件,再执行`run_script`实现一键直出。

**保存自动化脚本**
首先使用`save_script`保存可执行的脚本清单,这会生成或更新项目文件夹中的 `project_script.yml`文件:

```python
# 加载
p.save_script()
```

**查看`project_script.yml`**

`project_script.yml`的结构是一个`yaml`文件,你也手工收工编辑或对生成或的脚本裁剪。

**执行下面的脚本就可以重新生成结果:**

```python
# 执行
p.run_script()
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/arcstep/textlong",
    "name": "textlong",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": "arcstep",
    "author_email": "43801@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/a3/60/d7f2dfef1b0c6ce9e57a9ca64f4b9765018db86747ce866b7854c0955a32/textlong-0.4.15.tar.gz",
    "platform": null,
    "description": "# \ud83e\udd9c\ud83e\udd9c\ud83e\udd9c textlong\n\n[![PyPI version](https://img.shields.io/pypi/v/textlong.svg)](https://pypi.org/project/textlong/)\n\n**textlong** \u7684\u76ee\u6807\u662f\u57fa\u4e8e\u5927\u8bed\u8a00\u6a21\u578b\u63d0\u4f9b\u7ed3\u6784\u5316\u7684\u957f\u6587\u672c\u751f\u6210\u80fd\u529b\u3002\n\n# \u4f18\u5316\u8bf4\u660e\n\n\u4ece 0.4.12 \u5f00\u59cb\uff0c\u4f7f\u7528\u8f83\u5c0f\u7684\u6a21\u578b\uff08\u4f8b\u5982\uff0c\u963f\u91cc\u4e91 QWen2 \u7cfb\u5217 0.5B/1.5B/7B/57B/72B \u7b49\uff09\u90fd\u5df2\u7ecf\u53ef\u4ee5\u83b7\u5f97\u8f83\u597d\u751f\u6210\u6548\u679c\u3002\n\n# \u300atextlong \u4f7f\u7528\u6307\u5357\u300b\n\n## 1 \u73af\u5883\u51c6\u5907\n\n### 1.1 \u4f7f\u7528 dotenv \u7ba1\u7406\u73af\u5883\u53d8\u91cf\n\n\u5c06 APIKEY \u548c\u9879\u76ee\u914d\u7f6e\u4fdd\u5b58\u5230`.env`\u6587\u4ef6\uff0c\u518d\u52a0\u8f7d\u5230\u8fdb\u7a0b\u7684\u73af\u5883\u53d8\u91cf\u4e2d\uff0c\u8fd9\u662f\u5f88\u597d\u7684\u5b9e\u8df5\u7b56\u7565\u3002\n\n\u8fd9\u9700\u8981\u4f7f\u7528 dotenv \u5305\uff0c\u5b83\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u7ba1\u7406\u9879\u76ee\u4e2d\u7684\u73af\u5883\u53d8\u91cf\u3002\n\n\u521b\u5efa\u548c\u914d\u7f6e`.env`\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u5728\u4f60\u9879\u76ee\u7684\u6839\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a`.env`\u7684\u6587\u4ef6\uff08\u6ce8\u610f\uff0c\u6587\u4ef6\u540d\u4ee5\u70b9\u5f00\u59cb\uff09\u3002\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e2d\uff0c\u4f60\u53ef\u4ee5\u5b9a\u4e49\u4f60\u7684\u73af\u5883\u53d8\u91cf\uff0c\u4f8b\u5982\uff1a\n\n```\nZHIPUAI_API_KEY=\"\u4f60\u7684\u667a\u8c31AI API\u5bc6\u94a5\"\nTEXTLONG_FOLDER=\"\u4f60\u7684\u9879\u76ee\u76ee\u5f55\"\n```\n\n\u4e3a\u6b64\uff0c\u4f60\u53ef\u80fd\u9700\u8981\u5148\u5b89\u88c5 python-dotenv \u5305\uff1a\n\n```bash\npip install python-dotenv\n```\n\n\u7136\u540e\u5728 Python \u4ee3\u7801\u4e2d\uff0c\u4f7f\u7528\u4ee5\u4e0b\u4ee3\u7801\u7247\u6bb5\u6765\u52a0\u8f7d`.env`\u6587\u4ef6\u4e2d\u7684\u73af\u5883\u53d8\u91cf\uff1a\n\n```python\nfrom dotenv import load_dotenv, find_dotenv\nload_dotenv(find_dotenv(), override=True)\n```\n\n### 1.2 \u7533\u8bf7\u5927\u8bed\u8a00\u6a21\u578b\n\n\u5f53\u4f60\u51b3\u5b9a\u7533\u8bf7\u5927\u8bed\u8a00\u6a21\u578b\u670d\u52a1\u65f6\uff0c\u53ef\u4ee5\u9009\u62e9\u7f8e\u56fd\u516c\u53f8\u5982 OpenAI \u6216 Claude \u63d0\u4f9b\u7684\u670d\u52a1\uff0c\u4e5f\u53ef\u4ee5\u9009\u62e9\u4e2d\u56fd\u7684\u667a\u8c31 AI \u7b49\u56fd\u5185\u670d\u52a1\u3002\u8fd9\u4e9b\u670d\u52a1\u901a\u5e38\u90fd\u4f1a\u63d0\u4f9b\u8be6\u7ec6\u7684\u7533\u8bf7\u6d41\u7a0b\u6307\u5f15\u3002\u7533\u8bf7\u8fc7\u7a0b\u4e2d\uff0c\u4f60\u9700\u8981\u586b\u5199\u76f8\u5173\u4fe1\u606f\uff0c\u5e76\u6309\u7167\u6307\u5f15\u5b8c\u6210\u76f8\u5e94\u7684\u6b65\u9aa4\u3002\u6210\u529f\u7533\u8bf7\u540e\uff0c\u4f60\u4f1a\u83b7\u5f97\u4e00\u4e2a API_KEY\uff0c\u8fd9\u662f\u4f60\u8c03\u7528\u8fd9\u4e9b\u5927\u8bed\u8a00\u6a21\u578b\u670d\u52a1\u7684\u552f\u4e00\u51ed\u8bc1\u3002\n\n\u83b7\u5f97 API_KEY \u540e\uff0c\u4e3a\u4e86\u786e\u4fdd\u5176\u5b89\u5168\u6027\u548c\u4fbf\u6377\u6027\uff0c\u4f60\u5e94\u8be5\u5c06\u5176\u914d\u7f6e\u5230\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684`.env`\u6587\u4ef6\u4e2d\uff0c\u4f8b\u5982\uff1a\n\n**\u4f60\u7684.env \u6587\u4ef6**\n\n```\nZHIPUAI_API_KEY=\"YOUR_API_KEY_NAME\"\n```\n\n\u8fd9\u79cd\u65b9\u5f0f\u4e0d\u4ec5\u80fd\u4fdd\u62a4\u4f60\u7684\u654f\u611f\u4fe1\u606f\uff0c\u8fd8\u80fd\u8ba9\u4f60\u7684\u4ee3\u7801\u66f4\u52a0\u6574\u6d01\u3001\u6613\u4e8e\u7ba1\u7406\u3002\n\n## 2 textlong \u7684\u5b89\u88c5\u4e0e\u52a0\u8f7d\n\n### 2.1 \u5b89\u88c5 textlong \u5305\n\n\u5728 Python \u4e2d\u5b89\u88c5 textlong \u5305\u975e\u5e38\u7b80\u5355\uff0c\u4ee5\u4e0b\u547d\u4ee4\u4f1a\u5c1d\u8bd5\u5b89\u88c5\u6700\u65b0\u7248\u672c\u7684 textlong\uff1a\n\n```sh\npip install textlong\n```\n\n\u4e3a\u4e86\u786e\u4fdd\u5b89\u88c5\u7684\u662f\u6700\u65b0\u7248\u672c\uff0c\u53ef\u4ee5\u5728\u547d\u4ee4\u4e2d\u6dfb\u52a0`--upgrade`\u9009\u9879\uff0c\u5982\u4e0b\uff1a\n\n```sh\npip install --upgrade textlong\n```\n\n## 3 \u4f7f\u7528 textlong \u521b\u4f5c\u957f\u6587\n\n### 3.1 \u5728 jupyter \u73af\u5883\u4e2d\u4f7f\u7528 textlong\n\n**\u5b89\u88c5 JupyterLab**\n\n\u5728\u4f7f\u7528 textlong \u4e4b\u524d\uff0c\u9996\u5148\u9700\u8981\u786e\u4fdd\u4f60\u7684\u73af\u5883\u4e2d\u5b89\u88c5\u4e86 JupyterLab\u3002JupyterLab \u662f\u4e00\u4e2a\u4ea4\u4e92\u5f0f\u7684\u5f00\u53d1\u73af\u5883\uff0c\u975e\u5e38\u9002\u5408\u8fdb\u884c\u6570\u636e\u5206\u6790\u548c\u673a\u5668\u5b66\u4e60\u9879\u76ee\u3002\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5 JupyterLab\uff1a\n\n```sh\npip install jupyterlab\n```\n\n\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u542f\u52a8 JupyterLab\uff1a\n\n```sh\njupyter-lab\n```\n\n**\u5efa\u7acb\u7b14\u8bb0**\n\n\u5728\u65b0\u7684\u7b14\u8bb0\u4e2d\uff0c\u9996\u5148\u9700\u8981\u5bfc\u5165 textlong \u5305\u3002\u5728\u8fdb\u884c\u5bfc\u5165\u4e4b\u524d\uff0c\u8bf7\u786e\u4fdd\u5df2\u7ecf\u6309\u7167\u524d\u9762\u7684\u6b65\u9aa4\u6b63\u786e\u5b89\u88c5\u4e86 textlong \u5305\uff1a\n\n\u9996\u5148\uff0c\u52a0\u8f7d\u4f60\u7684\u73af\u5883\u53d8\u91cf\uff0c\u8fd9\u6837\u4f60\u5c31\u53ef\u4ee5\u5b89\u5168\u5730\u8bbf\u95ee API \u5bc6\u94a5\uff1a\n\n```python\nfrom dotenv import load_dotenv, find_dotenv\nload_dotenv(find_dotenv(), override=True)\n```\n\n\u63a5\u4e0b\u6765\uff0c\u5bfc\u5165 textlong \u5305\u548c\u6240\u9700\u7684\u6a21\u578b\uff1a\n\n```python\nfrom textlong import Project\nfrom langchain_zhipu import ChatZhipuAI\n```\n\n\u73b0\u5728\uff0c\u4f60\u53ef\u4ee5\u521d\u59cb\u5316\u4e00\u4e2a Project \u5bf9\u8c61\uff0c\u5982\u4e0b\u6240\u793a\uff1a\n\n```python\np = Project(ChatZhipuAI(model=\"glm-4\"), project_id=\"demo\")\np\n```\n\n\u8fd9\u91cc`project_id`\u662f\u4f60\u4e3a textlong \u9879\u76ee\u6307\u5b9a\u7684\u552f\u4e00\u6807\u8bc6\u7b26\u3002\u786e\u4fdd\u4f60\u4f7f\u7528\u7684\u662f\u6b63\u786e\u7684 API \u6a21\u578b\u540d\u79f0\u548c\u9879\u76ee ID\u3002\n\n\u606d\u559c\u4f60\uff0c\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528 textlong \u5305\u6765\u521b\u4f5c\u957f\u6587\u4e86\uff01\n\n### 3.2 \u521b\u4f5c\u63d0\u7eb2\n\n\u4ece\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u5f00\u59cb\uff0c\u5047\u8bbe\u6211\u4eec\u8981\u521b\u4f5c\u7684\u662f\u4e00\u90e8 10000 \u5b57\u7684\u4fee\u4ed9\u5c0f\u8bf4\uff0c\u6807\u9898\u4e3a\u300a\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u300b\uff0c\u4e3b\u89d2\u662f\u590f\u5c0f\u5170\uff0c\u7537\u4e00\u53f7\u662f\u5468\u6210\uff0c\u6bcf\u4e2a\u7ae0\u8282\u90fd\u5c06\u4ee5\u610f\u5916\u548c\u6253\u8138\u7684\u7ebf\u7d22\u63a8\u52a8\u60c5\u8282\u3002\n\n\u63a5\u4e0b\u6765\uff0c\u4f7f\u7528 textlong \u7684`outline`\u65b9\u6cd5\u6765\u521b\u5efa\u63d0\u7eb2\u3002\n\n```python\ntask = \"\u8bf7\u5e2e\u6211\u521b\u4f5c10000\u5b57\u7684\u4fee\u4ed9\u5c0f\u8bf4\uff0c\u6807\u9898\u4e3a\u300a\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u300b\uff0c\u4e3b\u89d2\u662f\u590f\u5c0f\u5170\uff0c\u7537\u4e00\u53f7\u662f\u5468\u6210\uff0c\u6bcf\u4e00\u4e2a\u7ae0\u8282\u90fd\u9002\u7528\u610f\u5916\u3001\u6253\u8138\u7684\u7ebf\u7d22\u63a8\u52a8\u3002\"\np.outline(\"\u63d0\u7eb2.md\", task)\n```\n\n\u5f53\u4f60\u8fd0\u884c\u4e0a\u8ff0\u4ee3\u7801\u540e\uff0ctextlong \u4f1a\u6839\u636e\u4f60\u7684\u4efb\u52a1\u63cf\u8ff0\u81ea\u52a8\u751f\u6210\u4e00\u4efd\u63d0\u7eb2\u3002\u63d0\u7eb2\u5c06\u5305\u62ec\u5c0f\u8bf4\u7684\u7ae0\u8282\u5212\u5206\u548c\u6bcf\u4e2a\u7ae0\u8282\u7684\u5173\u952e\u60c5\u8282\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u8fd9\u4e2a\u63d0\u7eb2\u6765\u8fdb\u884c\u6587\u7ae0\u7684\u6269\u5199\u3002\n\n\u751f\u6210\u7684\u7ed3\u679c\u5982\u4e0b\uff1a\n\n```md\n# \u300a\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u300b\n\n## \u7b2c\u4e00\u7ae0\uff1a\u661f\u8fb0\u4e4b\u5973\u7684\u89c9\u9192\n\n<OUTLINE>\n\u590f\u5c0f\u5170\u4e00\u76f4\u88ab\u8ba4\u4e3a\u62e5\u6709\u795e\u79d8\u529b\u91cf\uff0c\u5374\u5728\u4e00\u6b21\u610f\u5916\u4e2d\u88ab\u63ed\u9732\u51fa\u5979\u7684\u80fd\u529b\u5e76\u4e0d\u5982\u5916\u754c\u4f20\u8a00\u90a3\u822c\u5f3a\u5927\uff0c\u5b9e\u9645\u4e0a\u5979\u4fee\u4e86\u4e2a\u201c\u5047\u4ed9\u201d\u3002\u8fd9\u6b21\u89c9\u9192\u8ba9\u5979\u5728\u6751\u4e2d\u53d7\u5c3d\u767d\u773c\uff0c\u51b3\u5fc3\u8e0f\u4e0a\u5bfb\u627e\u771f\u6b63\u4fee\u4ed9\u4e4b\u9053\u7684\u65c5\u7a0b\u3002\n\n\u6269\u5199\u8981\u6c42\uff1a\n\n- \u9884\u4f30\u5b57\u6570\uff1a1000\n- \u521b\u610f\u8981\u70b9\uff1a\u610f\u5916\u63ed\u9732\uff0c\u80fd\u529b\u4e0d\u8db3\uff0c\u51b3\u5fc3\u8ffd\u6c42\u771f\u76f8\n- \u521b\u4f5c\u601d\u8def\uff1a\u901a\u8fc7\u4e3b\u89d2\u7684\u5931\u843d\u548c\u89c9\u9192\uff0c\u5f15\u51fa\u540e\u7eed\u6210\u957f\u548c\u5192\u9669\n- \u6d89\u53ca\u5b9e\u4f53\u540d\u79f0\uff1a\u590f\u5c0f\u5170\uff0c\u661f\u8fb0\u4e4b\u5973\n\n</OUTLINE>\n\n...\n```\n\n### 3.3 \u6587\u7ae0\u6269\u5199\n\n\u63a5\u4e0b\u6765\uff0c\u662f\u6839\u636e\u63d0\u7eb2\u6269\u5199\uff1a\n\n```python\np.from_outline(\n    output_file=\"\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u4eba.md\",\n    input=\"\u63d0\u7eb2.md\"\n)\n```\n\n\u8fd0\u884c\u4e0a\u8ff0\u4ee3\u7801\uff0ctextlong \u5c06\u6839\u636e\u201c\u63d0\u7eb2.md\u201d\u4e2d\u7684\u7ed3\u6784\uff0c\u751f\u6210\u4e00\u7bc7\u540d\u4e3a\u201c\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u4eba.md\u201d\u7684\u6587\u7ae0\u521d\u7a3f\u3002\n\n\u4e5f\u8bb8\u4f60\u5e0c\u671b\u5bf9\u751f\u6210\u7684\u6587\u7ae0\u8fdb\u884c\u5fae\u8c03\uff0c\u4ee5\u66f4\u597d\u5730\u7b26\u5408\u4f60\u7684\u521b\u4f5c\u98ce\u683c\u6216\u6587\u7ae0\u9700\u6c42\u3002\n\u4e3a\u6b64\uff0c\u4f60\u53ef\u4ee5\u50cf\u4e0b\u9762\u8fd9\u6837\u8c03\u6574`from_outline`\u65b9\u6cd5\u7684\u53c2\u6570\uff1a\n\n```python\np.from_outline(\n    output_file=\"\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u4eba.md\",\n    input=\"\u63d0\u7eb2.md\",\n    task=\"\u591a\u4f7f\u7528\u4eba\u7269\u7ec6\u8282\u3001\u5bf9\u8bdd\u63cf\u5199\u3001\u6253\u6597\u63cf\u5199\uff0c\u51cf\u5c11\u62bd\u8c61\u53d9\u4e8b\"\n)\n```\n\n\u5728\u8fd9\u4e2a\u8c03\u6574\u540e\u7684\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u6dfb\u52a0\u4e86\u4e00\u4e2a\u989d\u5916\u7684\u53c2\u6570`task`\uff0c\u7528\u4e8e\u6307\u5bfc AI \u5728\u751f\u6210\u6587\u7ae0\u65f6\u8981\u7279\u522b\u5173\u6ce8\u7684\u65b9\u9762\u3002\u8fd9\u6837\uff0c\u751f\u6210\u7684\u6587\u7ae0\u5c06\u5305\u542b\u66f4\u591a\u7684\u4eba\u7269\u7ec6\u8282\u3001\u5bf9\u8bdd\u548c\u6253\u6597\u63cf\u5199\uff0c\u540c\u65f6\u51cf\u5c11\u62bd\u8c61\u7684\u53d9\u8ff0\u3002\n\n\u751f\u6210\u7ed3\u679c\u5982\u4e0b\uff1a\n\n```md\n# \u300a\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u300b\n\n## \u7b2c\u4e00\u7ae0\uff1a\u661f\u8fb0\u4e4b\u5973\u7684\u89c9\u9192\n\n\u590f\u5c0f\u5170\uff0c\u4e00\u76f4\u88ab\u6751\u6c11\u89c6\u4e3a\u62e5\u6709\u795e\u79d8\u529b\u91cf\u7684\u661f\u8fb0\u4e4b\u5973\u3002\u7136\u800c\uff0c\u5728\u90a3\u6b21\u610f\u5916\u4e2d\uff0c\u5979\u7684\u771f\u5b9e\u80fd\u529b\u88ab\u63ed\u7a7f\uff0c\u539f\u6765\u5979\u4fee\u4e86\u4e2a\u201c\u5047\u4ed9\u201d\u3002\u6751\u4e2d\u7684\u5632\u7b11\u4e0e\u767d\u773c\uff0c\u8ba9\u5979\u75db\u4e0d\u6b32\u751f\u3002\u590f\u5c0f\u5170\u7ad9\u5728\u6751\u53e3\uff0c\u7d27\u63e1\u53cc\u62f3\uff0c\u773c\u4e2d\u95ea\u8fc7\u575a\u5b9a\uff1a\u201c\u6211\u4e00\u5b9a\u8981\u627e\u5230\u771f\u6b63\u7684\u4fee\u4ed9\u4e4b\u9053\uff0c\u8bc1\u660e\u7ed9\u6240\u6709\u4eba\u770b\uff01\u201d\n\n\u90a3\u5929\uff0c\u9633\u5149\u900f\u8fc7\u4e91\u5c42\u6d12\u5728\u5979\u7684\u8138\u4e0a\uff0c\u4eff\u4f5b\u9884\u793a\u7740\u5979\u5373\u5c06\u8e0f\u4e0a\u7684\u8270\u96be\u65c5\u7a0b\u3002\u590f\u5c0f\u5170\u8fc8\u5f00\u575a\u5b9a\u7684\u6b65\u4f10\uff0c\u79bb\u5f00\u8fd9\u4e2a\u8ba9\u5979\u5145\u6ee1\u5931\u843d\u7684\u5730\u65b9\uff0c\u53bb\u5bfb\u627e\u5c5e\u4e8e\u81ea\u5df1\u7684\u771f\u76f8\u3002\n\n...\n```\n\n### 3.4 \u5f15\u7528\u7d20\u6750\u7ba1\u7406\n\n\u53ef\u80fd\u4f60\u5e0c\u671b\u5728\u521b\u4f5c\u8fc7\u7a0b\u4e2d\uff0c\u5728\u6bcf\u4e2a\u6b65\u9aa4\u90fd\u5171\u4eab\u4e00\u4e9b\u77e5\u8bc6\uff0c\u4f8b\u5982\u5728\u521b\u4f5c\u957f\u7bc7\u5c0f\u8bf4\u65f6\u7684\u4eba\u7269\u8bbe\u5b9a\u3002\n\n\u4f60\u53ef\u4ee5\u5148\u4f7f\u7528\u7528`idea`\u65b9\u6cd5\u751f\u6210\u5173\u4e8e\u5c0f\u8bf4\u4eba\u7269\u7684\u8bbe\u5b9a\uff1a\n\n```python\ntask = \"\u6211\u8981\u5199\u4e00\u4e2a\u4fee\u4ed9\u5c0f\u8bf4\uff0c\u4e3b\u89d2\u662f\u590f\u5c0f\u5170\uff0c\u7537\u4e00\u53f7\u662f\u5468\u6210\uff0c\u8bf7\u5e2e\u6211\u8bbe\u60f3\u4e00\u4e0b\u8fd9\u4e24\u4e2a\u4eba\u7684\u51fa\u8eab\uff0c\u8981\u975e\u5e38\u9b54\u5e7b\u3002\"\np.idea(\"\u4eba\u7269\u8bbe\u5b9a.md\", task)\n```\n\n\u63a5\u4e0b\u6765\uff0c\u901a\u8fc7`from_outline`\u65b9\u6cd5\u4e2d\u7684`knowledge`\u53c2\u6570\u6765\u5f15\u7528\u5b83\u4eec\u3002\u5982\u4e0b\u793a\u4f8b\uff1a\n\n```python\np.from_outline(\n    output_file=\"\u6211\u4fee\u4e86\u4e2a\u5047\u4ed9\u4eba.md\",\n    input=\"\u63d0\u7eb2.md\",\n    task=\"\u591a\u4f7f\u7528\u4eba\u7269\u7ec6\u8282\u3001\u5bf9\u8bdd\u63cf\u5199\u3001\u6253\u6597\u63cf\u5199\uff0c\u51cf\u5c11\u62bd\u8c61\u53d9\u4e8b\",\n    knowledge=[\"\u4eba\u7269\u8bbe\u5b9a.md\"]\n)\n```\n\n\u6ce8\u610f\uff0c`idea`\u3001`outline`\u7b49\u65b9\u6cd5\u4e2d\u540c\u6837\u53ef\u4ee5\u4f7f\u7528`knowledge`\u53c2\u6570\u3002\n\n## 4 \u4e00\u952e\u76f4\u51fa\n\n\u4f60\u5728\u4e0a\u8ff0\u9879\u76ee\u4e2d\u4f7f\u7528\u8fc7\u7684\u65b9\u6cd5\u90fd\u5df2\u7ecf\u88ab\u65e5\u5fd7\u8bb0\u5f55\uff0c\u56e0\u6b64\u53ef\u4ee5\u901a\u8fc7`save_script`\u5c06\u4f60\u624b\u5de5\u6267\u884c\u8fc7\u7684\u52a8\u4f5c\u4fdd\u5b58\u5230 `project_script.yml`\u811a\u672c\u6587\u4ef6\uff0c\u518d\u6267\u884c`run_script`\u5b9e\u73b0\u4e00\u952e\u76f4\u51fa\u3002\n\n**\u4fdd\u5b58\u81ea\u52a8\u5316\u811a\u672c**\n\u9996\u5148\u4f7f\u7528`save_script`\u4fdd\u5b58\u53ef\u6267\u884c\u7684\u811a\u672c\u6e05\u5355\uff0c\u8fd9\u4f1a\u751f\u6210\u6216\u66f4\u65b0\u9879\u76ee\u6587\u4ef6\u5939\u4e2d\u7684 `project_script.yml`\u6587\u4ef6\uff1a\n\n```python\n# \u52a0\u8f7d\np.save_script()\n```\n\n**\u67e5\u770b`project_script.yml`**\n\n`project_script.yml`\u7684\u7ed3\u6784\u662f\u4e00\u4e2a`yaml`\u6587\u4ef6\uff0c\u4f60\u4e5f\u624b\u5de5\u6536\u5de5\u7f16\u8f91\u6216\u5bf9\u751f\u6210\u6216\u7684\u811a\u672c\u88c1\u526a\u3002\n\n**\u6267\u884c\u4e0b\u9762\u7684\u811a\u672c\u5c31\u53ef\u4ee5\u91cd\u65b0\u751f\u6210\u7ed3\u679c\uff1a**\n\n```python\n# \u6267\u884c\np.run_script()\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A framework designed to produce long-texts with GPT or other large language models.",
    "version": "0.4.15",
    "project_urls": {
        "Homepage": "https://github.com/arcstep/textlong",
        "Repository": "https://github.com/arcstep/textlong.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "27784c8efe5607c7c84b1140739b0a9abf29e14385abdba4fd4d5d5aa5c64508",
                "md5": "16ff4f540aa8b64dbe88b97b386ae857",
                "sha256": "a2811745df4ea1f92c69a4e30fcfde7d203aec10c3aae76ee591e87a42dba2f6"
            },
            "downloads": -1,
            "filename": "textlong-0.4.15-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "16ff4f540aa8b64dbe88b97b386ae857",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.10",
            "size": 59765,
            "upload_time": "2024-08-01T15:39:51",
            "upload_time_iso_8601": "2024-08-01T15:39:51.872147Z",
            "url": "https://files.pythonhosted.org/packages/27/78/4c8efe5607c7c84b1140739b0a9abf29e14385abdba4fd4d5d5aa5c64508/textlong-0.4.15-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a360d7f2dfef1b0c6ce9e57a9ca64f4b9765018db86747ce866b7854c0955a32",
                "md5": "dde056cd0cde5780b65d31d32808c8c2",
                "sha256": "fd89668ccf0362eb4e62b728bdd4df27430fcf84307c3c27a9b3dbe2f22478ea"
            },
            "downloads": -1,
            "filename": "textlong-0.4.15.tar.gz",
            "has_sig": false,
            "md5_digest": "dde056cd0cde5780b65d31d32808c8c2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.10",
            "size": 47233,
            "upload_time": "2024-08-01T15:39:53",
            "upload_time_iso_8601": "2024-08-01T15:39:53.551393Z",
            "url": "https://files.pythonhosted.org/packages/a3/60/d7f2dfef1b0c6ce9e57a9ca64f4b9765018db86747ce866b7854c0955a32/textlong-0.4.15.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-01 15:39:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "arcstep",
    "github_project": "textlong",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "textlong"
}
        
Elapsed time: 2.66705s