如何调用第三方大模型
阿里大模型
1. 获取百炼平台 api key
【阿里云】-【产品】-【人工智能与机器学习】-【大模型服务平台百炼】
2. 参考LangChain文档
https://python.langchain.com/docs/introduction/
3. 连接阿里大模型
"""
1. 引入模型
"""
from models import get_tongyi_chat_model
model = get_tongyi_chat_model()
model.invoke(input="你好")
"""
2. 阅读理解
给你一个段落,按照段落的描述来回答问题!
"""
from langchain_core.messages import SystemMessage
from langchain_core.messages import HumanMessage
sys_msg = SystemMessage(content="""
你是一个阅读理解机器人!
请认真阅读用户提供的文章,并根据文章的内容来回答用户的问题!、
请注意:如果问题没有在文章中出现,请直接使用你自己的知识来回答!
""")
user_msg = HumanMessage(content="""
文章为:
孙中山(1866年11月12日-1925年3月12日),名文,字载之,号日新,又号逸仙,又名帝象,化名中山樵,伟大的民族英雄、伟大的爱国主义者、中国民主革命的伟大先驱 [1],中华民国和中国国民党的缔造者,三民主义的倡导者,创立了《五权宪法》。他首举彻底反帝反封建的旗帜,“起共和而终两千年封建帝制”。 [2]
孙中山1866年11月12日生于广东省广州府香山县(今中山市)翠亨村。孙中山原在香港学医,并成为西医医师。孙中山目睹中华民族有被西方列强瓜分的危险,决定抛弃“医人生涯”,进行“医国事业”。孙中山早期受郑观应的改良思想影响,后看清了清政府的腐败,决心推翻清王朝,建立民主共和国。 [3-4] [44]
1894年11月24日,孙中山在檀香山创立兴中会 [4]。1905年(光绪三十一年)成立中国同盟会。1911年10月10日(宣统三年)新军中的革命党人暗中联络,决定当天晚上起义。辛亥革命后被推举为中华民国临时大总统(任期1912年1月1日——1912年4月1日)。1925年3月12日,孙中山因癌症在北京逝世。1929年6月1日,根据其生前遗愿,葬于南京紫金山中山陵。1940年,国民政府通令全国,尊称其为“中华民国国父”。
孙中山著有《建国方略》、《建国大纲》、《三民主义》等。其著述在逝世后多次被结集出版,有中华书局1986年出版的十一卷本《孙中山全集》,台北1969、1973、1985年出版的《国父全集》等。
问题为:
孙中山跟毛泽东是什么关系?
答案为:
""")
messages = [sys_msg, user_msg]
model.invoke(input=messages)
# 让用户传过一篇文章和一个问题,我们根据用户的文章来回答用户的问题
from langchain_core.prompts import SystemMessagePromptTemplate
from langchain_core.prompts import HumanMessagePromptTemplate
from langchain_core.prompts import ChatPromptTemplate
sys_prompt = SystemMessagePromptTemplate.from_template(template="""
你是一个阅读理解机器人!
请认真阅读用户提供的文章,并根据文章的内容来回答用户的问题!
请注意:
1, 如果问题没有在文章中出现,请直接使用你自己的知识来回答!
2, 不需要做任何的解释,直接回答问题的结果即可!
""")
user_prompt = HumanMessagePromptTemplate.from_template(template="""
文章为:
{passage}
问题为:
{question}
答案为:
""")
prompt = ChatPromptTemplate.from_messages(messages=[sys_prompt, user_prompt])
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()
chain = prompt | model | output_parser
passage = """
孙中山,名文,字载之,号日新,又号逸仙,又名帝象,化名中山樵,伟大的民族英雄、伟大的爱国主义者、中国民主革命的伟大先驱 [1],中华民国和中国国民党的缔造者,三民主义的倡导者,创立了《五权宪法》。他首举彻底反帝反封建的旗帜,“起共和而终两千年封建帝制”。 [2]
孙中山生于广东省广州府香山县(今中山市)翠亨村。孙中山原在香港学医,并成为西医医师。孙中山目睹中华民族有被西方列强瓜分的危险,决定抛弃“医人生涯”,进行“医国事业”。孙中山早期受郑观应的改良思想影响,后看清了清政府的腐败,决心推翻清王朝,建立民主共和国。 [3-4] [44]
1894年11月24日,孙中山在檀香山创立兴中会 [4]。1905年(光绪三十一年)成立中国同盟会。1911年10月10日(宣统三年)新军中的革命党人暗中联络,决定当天晚上起义。辛亥革命后被推举为中华民国临时大总统(任期1912年1月1日——1912年4月1日)。1925年3月12日,孙中山因癌症在北京逝世。1929年6月1日,根据其生前遗愿,葬于南京紫金山中山陵。1940年,国民政府通令全国,尊称其为“中华民国国父”。
孙中山著有《建国方略》、《建国大纲》、《三民主义》等。其著述在逝世后多次被结集出版,有中华书局1986年出版的十一卷本《孙中山全集》,台北1969、1973、1985年出版的《国父全集》等。
"""
question = """
Please list 孙中山's other names!
"""
chain.invoke(input=dict(passage=passage, question=question))
拓展
- 1. 公司内部的私有知识资料
- 产品说明
- 规章制度
- 对外文案
- ……
- 2. 让大模型根据私有知识资料来回答问题
存在几个问题:
- 私有知识可能很多,是否全都要参考呢?
- 能否只选择跟问题有关的知识让大模型参考呢?
- 如何判断或筛选跟问题相关的知识呢?
- 根据文本相似度来进行检索
- 关键词匹配?
- 要求太高了,需要提前准备好文章的关键词
- 国际化的社会,大模型对语言是无感知的理解的,不应该区分语言,所以咱们不应该用关键词匹配
- 语义化匹配?
- 脱离语言本身,看内涵
- 跨语言、跨表达习惯,直奔这句话的本质
- 如何实现呢?
- 把私有资料,按逻辑、互相独立的单元来分段
- 使用一个模型(本质:BERT,向量化模型),把每段知识的核心信息抽取出来,变成一个向量(比如,1024维)
- 找一个数据库(向量化,GPU),把这些知识片段及其向量都存起来
- 提一个问题:
- 先把问题通过向量化模型,变成一个向量
- 然后使用这个向量到向量库中,查找最相似的上下文
- 把问题和上下文一起交给模型,让模型回答问题
- 疑问:你已经在库里找到答案了,为何还要让大模型生成答案?
- 检索出来的结果,有些高度相关,有些低相关,而且比较长,需要自己加工。
- 大模型帮我们快速筛选和判断,而且按照你的习惯要求来输出结果。
- 疑问:你已经在库里找到答案了,为何还要让大模型生成答案?
- 关键词匹配?
- 根据文本相似度来进行检索
- 如何判断或筛选跟问题相关的知识呢?
阅读理解拓展
- 准备:
- Load 加载 / 读取私有知识
- Split 切分 私有知识
- Embed 向量化
- Store 入库
- 使用:
- Query 提问
- Retrieve 检索(相关的上下文)
- Augment 增强(在prompt中整合问题和上下文)
- Generate 生成(生成最终的结果)
- RAG:检索增强生成
- RAG相关的环境搭建
- pip install chromadb -U
- pip install langchain -U
- pip install langchain-chroma -U
- pip install langchain-core -U
- pip install langchain-community -U
- pip install langchain-text-splitters -U
- pip install langchain-openai -U
- pip install langgraph -U
- pip install langserve -U