项目背景
llm-strategy
是一个创新的软件工程项目,旨在利用大型语言模型(LLMs)的强大功能来实现策略模式。策略模式是一种设计模式,通常用于替代多分支的条件语句以实现动态行为选择。而 llm-strategy
则通过一种独特的方法来实现这一点,即使用 LLM 来填补接口类中抽象方法的实现。这种方法不仅能够简化代码结构,还可能大大减少对编写冗余代码的需求。
核心功能
llm-strategy
项目通过添加一个名为 llm_strategy
的装饰器来运作。这个装饰器可与像 OpenAI 的 GPT-3 这样的 LLM 联结,将特定请求传递给 LLM,再把 LLM 的响应结果转化为 Python 数据类型。目前,这一功能支持使用 Python 的 @dataclasses
数据类。而且,llm-strategy
能够利用方法/函数的文档字符串、类型注解以及名字来构建 LLM 的提示,从而引导其生成所需输出。
项目的一个长远目标是通过使用更便宜的 LLM 来实现结构化数据的自动解析,减少对传统 Python 代码的依赖。
研究应用
最新版本的 llm-strategy
包含了一个用于跟踪超参数和收集 LLM 迹线的包。这允许进行类似元优化这样的高级研究操作。例如,在项目的研究例子中,使用了泛型来进行超参数优化的简单实现。通过这种方式,用户可以从每一项任务中汲取教训来改进超参数的选择。
应用示例
以下是代码示例,展示了如何使用 llm-strategy
:
from dataclasses import dataclass
from llm_strategy import llm_strategy
from langchain.llms import OpenAI
@llm_strategy(OpenAI(max_tokens=256))
@dataclass
class Customer:
key: str
first_name: str
last_name: str
birthdate: str
address: str
@property
def age(self) -> int:
"""Return the current age of the customer.
This is a computed property based on `birthdate` and the current year (2022).
"""
raise NotImplementedError()
@dataclass
class CustomerDatabase:
customers: list[Customer]
def find_customer_key(self, query: str) -> list[str]:
"""使用自然语言查询匹配客户键(按相似度排序)。
支持语义查询,而非 SQL 查询。因此可以搜索类似“出生于1990年的客户”这样的语句。
Args:
query: 自然语言查询
Returns:
最匹配客户在数据库中的索引。
"""
raise NotImplementedError()
这种应用意味着您可以通过简单的自然语言指令达成复杂的数据查询和操作,无需编写详细的算法和逻辑代码。
如何贡献
想要为此项目做出贡献的人可以先克隆代码仓库,然后通过以下命令安装环境和预提交钩子:
make install
每当新建 pull request、合并至主分支或者创建新版本时,项目的 CI/CD 流水线都会被触发。此外,项目还提供了一整套工具和指南来帮助发布新版本、生成自动化文档以及启用代码覆盖率报告。
版本发布
要发布一个新版本,首先需要在 Pypi 上创建一个 API Token,并将其加入到 GitHub 项目的 secrets 中,名字为 PYPI_TOKEN
。然后在 GitHub 上创建一个新版本,指明一个类似 *.*.*
的标签。
更多关于发布的详细过程,可以参考这一页。
通过这些步骤,llm-strategy
项目不仅能提供一个强大的工具来简化代码设计,还能推动软件开发向着更加智能化的方向发展。