腾讯云开发者社区 langchain & 智谱 快速入门

langchain & 智谱 快速入门

langchain & 智谱 快速入门第一步:安装依赖包pip install langchain第二步:调用智谱AI我们需要引入包登录后复制from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMes...

egzosn  ·  2024-11-07 17:03:33 发布
langchain & 智谱 快速入门

第一步:安装依赖包

pip install langchain

第二步:调用智谱AI

我们需要引入包

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
  • 1.
  • 2.

第三步 使用ChatOpenAI实例化一个模型

model=ChatOpenAI(
temperature=0.95,
model="glm-4-flash",
openai_api_key=api_key,
openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

第四步 定义消息

messages= [
SystemMessage(content="请将英文翻译成中文"),
HumanMessage(content="hi"),
]
  • 1.
  • 2.
  • 3.
  • 4.

第五步 执行

model.invoke(messages)
  • 1.

输出结果:

AIMessage(content='嗨', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 3, 'prompt_tokens': 15, 'total_tokens': 18, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'glm-4-flash', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-93f6c4c9-570a-4507-ba44-026c6b54b96f-0', usage_metadata={'input_tokens': 15, 'output_tokens': 3, 'total_tokens': 18, 'input_token_details': {}, 'output_token_details': {}})

消息类型解释

SystemMessage:表示系统消息。这告诉模型如何行动

HumanMessage:表示用户的消息。

AIMessage:表示模型的消息。

我们现在把完整的代码展示出来,下面的代码向我们展示了一个简单的利用langchain请求智谱AI进行翻译的功能

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
model=ChatOpenAI(
temperature=0.95,
model="glm-4-flash",
openai_api_key=api_key,
openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)
messages = [
SystemMessage(content="请将英文翻译成中文"),
HumanMessage(content="hi"),
]
model.invoke(messages)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
langchain 解析器

根据刚才我们实验所的到的结果,可以看到模型输出的是一个AIMessage,如下:

AIMessage(content='嗨', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 3, 'prompt_tokens': 15, 'total_tokens': 18, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'glm-4-flash', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-93f6c4c9-570a-4507-ba44-026c6b54b96f-0', usage_metadata={'input_tokens': 15, 'output_tokens': 3, 'total_tokens': 18, 'input_token_details': {}, 'output_token_details': {}})

但是通常我们只是想处理最终响应的content内容,这个时候我们可以使用 输出解析器 进行解析这个响应

引入解析器

from langchain_core.output_parsers import StrOutputParser
  • 1.

实例化

parser= StrOutputParser()
  • 1.

一种比较简单的使用方式是将结果保存后,传递给解释器进行解析

result= model.invoke(messages)
parser.invoke(result)
  • 1.
  • 2.

通常 langchain已经给我们提供了一种链式调用,我们可以使用 | 符号进行连接后调用

chain= model | parser
chain.invoke(messages)
  • 1.
  • 2.
提示词模板

langchain 给我们提供了一个提示词模板ChatPromptTemplate,它用来帮助我们去构建提示词。你可以先简单的理解为python的字符串拼接的模板

例如:我们出去旅游,想知道某个城市,最有特色的地方,我们可以这样写出我们的提示词

from langchain_core.prompts import ChatPromptTemplate
#系统消息
system_template = "推荐这个城市最{text}"
#模板组合
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{city}")]
)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

如果想知道上面的提示词模板帮我们生成的最终提示词,我们来使用下面的代码查看一下,生成的提示词

result= prompt_template.invoke({"city": "北京", "text": "好吃的小吃"})
result.to_messages()
  • 1.
  • 2.

最后使用 | 将解析器联合起来调用

chain= prompt_template | model | parser
chain.invoke({"city": "北京", "text": "好吃的小吃"})
  • 1.
  • 2.

输出结果:

'北京作为中国的首都,拥有丰富的美食文化,以下是一些北京著名的小吃推荐:\n\n1. 炸酱面 - 北京的传统面食,以黄酱炸酱和面条为主,佐以黄瓜丝、豆芽等蔬菜。\n\n2. 豆汁儿 - 北京特有的饮品,有一种独特的酸味,通常搭配焦圈或豆腐脑食用。\n\n3. 炒肝 - 北京的传统早点,以猪肝、猪肠为主料,配以黄豆、蒜泥、醋等调味。\n\n4. 卤煮火烧 - 以猪肠、猪肺、豆腐为主料,加上特制的卤汁煮制而成。\n\n5. 糖葫芦 - 冰糖裹在山楂、草莓等水果上,酸甜可口,是北京街头常见的小吃。\n\n6. 驴打滚 - 用糯米粉制成的小糕点,外包黄豆粉,甜而不腻。\n\n7. 焦圈 - 一种炸制的小吃,外脆内软,与豆汁儿非常搭配。\n\n8. 羊蝎子 - 以羊脊骨为主料,炖煮入味,肉质鲜嫩。\n\n9. 烤鸭 - 当然不能错过北京烤鸭,外皮酥脆,内肉鲜嫩,通常搭配葱丝、黄瓜条和甜面酱食用。\n\n10. 京酱肉丝 - 以细丝般的猪肉为主料,裹上面糊油炸后,再浇上特制的京酱。\n\n这些小吃可以在北京的老字号餐馆或者街边小吃店中品尝到。如果你有机会到北京旅游,不妨去尝试这些地道的小吃,感受北京的饮食文化。'

最终代码
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.prompts import ChatPromptTemplate
#实例化模型 创建连接
model=ChatOpenAI(
temperature=0.95,
model="glm-4-flash",
openai_api_key=api_key,
openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)
#系统消息
system_template = "推荐这个城市最{text}"
#提示词模板
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{city}")]
)
#解析器
parser = StrOutputParser()
#链式调用
chain = prompt_template | model | parser
chain.invoke({"city": "上海", "text": "有趣的景点"})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐

  • 浏览量 508
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献11条内容