阿里云开发者社区

电脑版
提示:原网页已由神马搜索转码, 内容由developer.aliyun.com提供.

大模型应用框架-LangChain(一)

('prompt-->', prompt)# prompt显示:
'''
prompt--> [HumanMessage(content="您是一位专业的鲜花店文案撰写员。\n\n对于售价为 50 元的 ['玫瑰'] ,您能提供一个吸引人的简短描述吗?\n注意: 文字不要超过50个字符\n# ")]'''

# 实例化模型
chat = QianfanChatEndpoint(    streaming=True,model="ERNIE-Bot-turbo"

)# 打印结果
result = chat(prompt)print(result)# 结果展示:
'''
content='玫瑰鲜花 售价50元\n纯手工编织花束,顶级玫瑰品种\n散发浓郁香气,温暖人心扉\n白色或粉红色,娇艳欲滴\n让爱情与浪漫伴随你每一天!#'

'''


2.1.4 Embeddings Models(嵌入模型)


Embeddings Models特点:将字符串作为输入,返回一个浮动数的列表。在NLP中,Embedding的作用就是将数据进行文本向量化。


Embeddings Models可以为文本创建向量映射,这样就能在向量空间里去考虑文本,执行诸如语义搜索之类的操作,比如说寻找相似的文本片段。


接下来我们以一个OpenAI文本嵌入模型的例子进行说明:


import  os
from langchain.embeddings import QianfanEmbeddingsEndpoint

os.environ['QIANFAN_AK'] = "SPPejIX4r2mEUdjdkVNwxTHc"
os.environ['QIANFAN_SK'] = "hOGdXomPZu8FRL51dkBZrEee4tqaS6PM"

embed = QianfanEmbeddingsEndpoint()res1 = embed.embed_query('这是第一个测试文档')print(res1)# 打印结果:
'''
[0.039765920490026474, 0.02263435162603855, -0.01889650709927082, ...., '''
res2 = embed.embed_documents(['这是第一个测试文档', '这是第二个测试文档'])print(res2)# 打印结果:
'''
[[0.03977284952998161, 0.022625437006354332, -0.01892162673175335, ...., '''


上述代码中,我们分别使用了两种方法来进行文本的向量表示,他们最大不同在于:embed_query()接收一个字符串的输入,而embed_documents可以接收一组字符串。


LangChain集成的文本嵌入模型有:


  • AzureOpenAI、Baidu Qianfan、Hugging Face Hub、OpenAI、Llama-cpp、SentenceTransformers


2.2 Prompts


Prompt是指当用户输入信息给模型时加入的提示,这个提示的形式可以是zero-shot或者few-shot等方式,目的是让模型理解更为复杂的业务场景以便更好的解决问题。


提示模板:如果你有了一个起作用的提示,你可能想把它作为一个模板用于解决其他问题,LangChain就提供了PromptTemplates组件,它可以帮助你更方便的构建提示。


zero-shot提示方式:


from langchain import PromptTemplate
from langchain.llms import QianfanLLMEndpoint
import  os
os.environ['QIANFAN_AK'] = "SPPejIX4r2mEUdjdkVNwxTHc"
os.environ['QIANFAN_SK'] = "hOGdXomPZu8FRL51dkBZrEee4tqaS6PM"
# 定义模板
template = "我的邻居姓{lastname},他生了个儿子,给他儿子起个名字"

prompt = PromptTemplate(    input_variables=["lastname"],    template=template,)
prompt_text = prompt.format(lastname="王")print(prompt_text)# result: 我的邻居姓王,他生了个儿子,给他儿子起个名字

llm = QianfanLLMEndpoint()
result = llm(prompt_text)print(result)# 打印结果:
'''
给邻居的儿子起名字是一件非常棒的事情!在考虑名字时,通常会考虑一些基本的因素,比如名字的含义、读音、书写等。以下是一些建议:

如果您想要一个简单的名字,那么可以考虑王煦宇。这个名字寓意着阳光和宽广的宇宙,表示孩子应该像太阳一样温暖、明朗,又如宇宙般宽广包容。

另一个选择是王谦嘉。这个名字意为谦虚、高尚,同时也表示嘉奖和庆祝。如果邻居有特别期望他的儿子将来成为有道德、有修养的人,这个名字可能是一个不错的选择。

当然,这只是一些建议,最终的决定应该基于王先生的个人喜好和期望。请确保名字易于书写和发音,并且与您和邻居的姓氏搭配得当。祝王先生和他的儿子一切顺利!

'''


few-shot提示方式:


from langchain import PromptTemplate, FewShotPromptTemplate
from langchain.llms import QianfanLLMEndpoint
import  os
os.environ['QIANFAN_AK'] = "SPPejIX4r2mEUdjdkVNwxTHc"
os.environ['QIANFAN_SK'] = "hOGdXomPZu8FRL51dkBZrEee4tqaS6PM"

examples = [    {"word": "开心", "antonym": "难过"},    {"word": "高", "antonym": "矮"},]
example_template = """
单词: {word}反义词: {antonym}\\n
"""

example_prompt = PromptTemplate(    input_variables=["word", "antonym"],    template=example_template,)
few_shot_prompt = FewShotPromptTemplate(    examples=examples,    example_prompt=example_prompt,    prefix="给出每个单词的反义词",    suffix="单词: {input}\\n反义词:",    input_variables=["input"],    example_separator="\\n",)
prompt_text = few_shot_prompt.format(input="粗")print(prompt_text)print('*'*80)# 给出每个单词的反义词
# 单词: 开心
# 反义词: 难过

# 单词: 高
# 反义词: 矮

# 单词: 粗
# 反义词:

# 调用OpenAI
llm = QianfanLLMEndpoint(temperature=0.9)print(llm(prompt_text))
# 细


2.3 Chains(链)


在LangChain中,Chains描述了将LLM与其他组件结合起来完成一个应用程序的过程.


针对上一小节的提示模版例子,zero-shot里面,我们可以用链来连接提示模版组件和模型,进而可以实现代码的更改:


from langchain import PromptTemplate
from langchain.llms import QianfanLLMEndpoint
from langchain.chains import LLMChain
import  os
os.environ['QIANFAN_AK'] = "SPPejIX4r2mEUdjdkVNwxTHc"
os.environ['QIANFAN_SK'] = "hOGdXomPZu8FRL51dkBZrEee4tqaS6PM"
# 定义模板
template = "我的邻居姓{lastname},他生了个儿子,给他儿子起个名字"

prompt = PromptTemplate(    input_variables=["lastname"],    template=template,)llm = QianfanLLMEndpoint()
chain = LLMChain(llm = llm,                  prompt = prompt)# 执行链
print(chain.run("王"))# 打印结果
'''
给邻居家的新生儿起名字是一件非常重要的事情,需要考虑到很多因素,包括家庭传统、父母的偏好、名字的含义等等。在这个情况下,王先生和太太可能会想要一个既传统又具有现代感的名字。

基于这些考虑,以下是一些适合男孩的名字:

1. 王梓轩(Zi Xuan):这个名字既有传统的含义(梓是树木的意思,轩是高远的意思),又具有现代感。
2. 王宇翔(Yu Xiang):这个名字既包含了宇宙的含义(宇是宇宙的意思,翔是飞翔的意思),又有希望他儿子能像鸟儿一样自由飞翔的寓意。
3. 王宇轩(Yu Xuan):这个名字也有同样的含义,而且也有一种稳重和宽广的感觉。
4. 王博远(Bo Yuan):这个名字的含义是博学而远志,既体现了父母的期望,又有一种清新明快的感觉。

请注意,在选择名字时,还需要考虑名字在社区中的受欢迎程度,以确保这个名字不会引起任何问题或误解。此外,如果王先生和太太有任何特定的偏好或期望,他们也应该在这个过程中发挥重要作用。

以上就是我为王先生的儿子提出的一些名字建议,希望能帮助到你们。
'''


如果你想将第一个模型输出的结果,直接作为第二个模型的输入,还可以使用LangChain的SimpleSequentialChain, 代码如下:


from langchain import PromptTemplate
from langchain.llms import QianfanLLMEndpoint
from langchain.chains import LLMChain, SimpleSequentialChain
import  os
os.environ['QIANFAN_AK'] = "SPPejIX4r2mEUdjdkVNwxTHc"
os.environ['QIANFAN_SK'] = "hOGdXomPZu8FRL51dkBZrEee4tqaS6PM"

# 创建第一条链
template = "我的邻居姓{lastname},他生了个儿子,给他儿子起个名字"

first_prompt = PromptTemplate(    input_variables=["lastname"],    template=template,)llm = QianfanLLMEndpoint(temperature=0.9)
first_chain = LLMChain(llm = llm, prompt = first_prompt)
# 创建第二条链
second_prompt = PromptTemplate(    input_variables=["child_name"],    template="邻居的儿子名字叫{child_name},给他起一个小名",)
second_chain = LLMChain(llm=llm, prompt=second_prompt)

# 链接两条链
# verbose=True可以显示推理过程
overall_chain = SimpleSequentialChain(chains=[first_chain, second_chain], verbose=True)
print(overall_chain)# 执行链,只需要传入第一个参数
catchphrase = overall_chain.run("王")print(catchphrase)#
'''
当然,给邻居的孩子起小名也是一个很好的方式,可以更加亲近和亲切。考虑到上述名字的含义和音韵,以下是一些小名的建议:

1. 梓轩宝宝:对应“王梓轩”这个名字,可以叫他“宝宝”,表示亲切和喜爱。
2. 宇帆小子:对应“王宇帆”这个名字,可以叫他“小子”,显得活泼可爱。
3. 瑞阳小宝:对应“王瑞阳”这个名字,可以叫他“小宝”,显得亲切温暖。
4. 博文宝贝:对应“王博文”这个名字,可以叫他“宝贝”,表示对他的喜爱和呵护。
5. 浩宇小星:对应“王浩宇”这个名字,可以叫他“小星”,显得充满活力和希望。
'''


大模型应用框架-LangChain(二)+https://developer.aliyun.com/article/1544760?spm=a2c6h.13148508.setting.17.22454f0eHFZZj3

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
3月前
|
人工智能前端开发搜索推荐
利用通义灵码和魔搭 Notebook 环境快速搭建一个 AIGC 应用 | 视频课
当我们熟悉了通义灵码的使用以及 Notebook 的环境后,大家可以共同探索 AIGC 的应用的更多玩法。
514124137
|
14天前
|
自然语言处理前端开发Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
|
2月前
|
人工智能自然语言处理数据挖掘
云上玩转Qwen3系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用
PAI-LangStudio 和 Qwen3 构建基于 MCP 协议的 Hologres ChatBI 智能 Agent 应用,通过将 Agent、MCP Server 等技术和阿里最新的推理模型 Qwen3 编排在一个应用流中,为大模型提供了 MCP+OLAP 的智能数据分析能力,使用自然语言即可实现 OLAP 数据分析的查询效果,减少了幻觉。开发者可以基于该模板进行灵活扩展和二次开发,以满足特定场景的需求。
|
2月前
|
人工智能自然语言处理小程序
蚂蚁百宝箱 3 分钟上手 MCP:6 步轻松构建 Qwen3 智能体应用并发布小程序
本文介绍如何用6个步骤、3分钟快速构建一个基于Qwen3与蚂蚁百宝箱MCP的智能体应用,并发布为支付宝小程序。通过结合Qwen3强大的语言理解和生成能力,以及支付宝MCP提供的支付功能,开发者可轻松打造具备商业价值的“数字员工”。案例以“全球智能导游助手”为例,支持119种语言,不仅提供旅行建议,还能收取用户打赏。文章详细说明了从登录百宝箱、创建应用、添加插件到配置角色、发布上架及手机端体验的完整流程,同时提醒当前支付功能仅适用于测试环境。适合希望探索AI应用变现潜力的开发者尝试。
3771414
|
3月前
|
人工智能搜索推荐API
AI赋能大学计划·大模型技术与应用实战学生训练营——华东师范大学站圆满结营
4月24日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行大模型应用实战学生训练营——华东师范大学站圆满结营。
13222
|
3月前
|
人工智能自然语言处理数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
17天前
|
边缘计算弹性计算API
超实用!魔搭社区 + 阿里云边缘云ENS,快速部署大模型应用
本文介绍了如何通过魔搭社区(ModelScope)与阿里云边缘云ENS结合,快速部署大模型并验证其效果。魔搭社区作为中国最大的开源模型平台,提供从模型探索到部署的一站式服务,而阿里云边缘云ENS则以超过3200个全球节点支持低时延、本地化的部署方案。文章详细说明了新建部署入口、模型选择、服务配置及效果验证的全流程,并提供了代码示例展示终端问答Bot的实际运行效果。未来,“模型即服务”(MaaS)模式将持续为开发者和企业带来更多创新机会,助力技术落地与业务升级。
1952526
|
2月前
|
人工智能数据挖掘API
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
2202121
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
|
2月前
|
Java数据库Docker
基于neo4j数据库和dify大模型框架的rag模型搭建
基于neo4j数据库和dify大模型框架的rag模型搭建
3793538
|
12天前
|
数据采集存储人工智能
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答

热门文章

最新文章

  • 1
    智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
    113
  • 2
    挑战杯专属支持资源|阿里云-AI大模型算力及实验资源丨云工开物
    51
  • 3
    魔塔社区-微调Qwen3-1.7B大模型实战
    182
  • 4
    大模型推理显存和计算量估计方法
    57
  • 5
    优化通义大模型推理性能:企业级场景下的延迟与成本削减策略
    75
  • 6
    通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》
    58
  • 7
    利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
    85
  • 8
    基于通义大模型的智能客服系统构建实战:从模型微调到API部署
    150
  • 9
    通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
    53
  • 10
    Kaggle金牌方案复现:CGO-Transformer-GRU多模态融合预测实战
    44