如何调用第三方大模型
阿里大模型
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
 
 



















