LangChain是一个基于LLM的套壳工具,相当于一个LLM的标准平台,可以帮助我们快速构建一个基于LLM的AI应用。
学习LangChain的基础资料:
- LangChain官方文档
- OpenAI API 官方文档,实际上各大模型都有自己的API文档,自行搜索即可
- HuggingFace 官方网站,开源大模型
LangChain中的Text调用Demo:
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model=os.environ.get("LLM_MODELEND"),
temperature=0.8,
max_tokens=600,
)
response = llm.predict("请给我的花店起个名")
print(response)
LangChain中的Chat调用Demo:
import os
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
chat = ChatOpenAI(
model=os.environ.get("LLM_MODELEND"),
temperature=0.8,
max_tokens=600
)
messages = [
SystemMessage(content="你是一个很棒的智能助手"),
HumanMessage(content="请给我的花店起个名"),
{"role": "assistant", "content": "以下是一些适合花店的名字,供你参考:\n\n1. 花漾时光\n2. 花之语\n3. 花语轩\n4. 花精灵\n5. 花之梦\n6. 花韵坊\n7. 花样年华\n8. 花坊小筑\n9. 花舞人间\n10. 花满蹊\n11. 花颜悦色\n12. 花意浓\n13. 花之盛宴\n14. 花与爱丽丝\n15. 心花怒放\n16. 繁花似锦\n17. 香花坊\n18. 梦幻花屋\n19. 浪漫花房\n20. 温馨花坊\n21. 花之港湾\n22. 百花齐放\n23. 花之恋\n24. 花伴一生\n25. 花漾生活\n26. 花之旋律\n27. 花之魅\n28. 花之天堂\n29. 花之精灵屋\n30. 花的世界 "},
HumanMessage(content="请在里面选一个你认为最好的名字")
]
response = chat(messages)
print(response.content)
不难注意到,Chat模型的代码比Text模型增加了一个messages列表,用于将历史对话的内容输入到大模型中处理,以实现大模型对对话上下文的理解。
总结一下,Text适合处理单轮文本生成任务,而Chat更适合处理具体的对话场景(System,Assistant,User三个角色)
文末提到,使用LangChain并不比直接调用OpenAI API来得省事。我认为LangChain的核心价值在于:LangChain集成了多个大模型的调用方法,相当于为多个大模型指定了一个API标准。在这种标准之下,各大模型需遵守并实现一些接口,从而为上层应用隐藏了大模型的调用细节,比如大模型A可能因自身原因不能提供服务,但我能立马使用大模型B“无缝衔接”,而不需要修改我自身应用程序的代码。LangChain使这种“无缝衔接”变得更加顺滑,此过程可称为 “虚拟化”,也是一种“封装”的思想。