AI大模型企业应用实战(10)-LLMs和Chat Models

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 【8月更文挑战第10天】

1 模型

两种模型:

  • LLM
  • 聊天模型

然后,介绍咋用:

  • 提示模板格式化这些模型的输入
  • 输出解析器来处理输出

LangChain 中的语言模型有两种类型:

1.1 Chat Models

聊天模型通常由 LLM 支持,但专门针对会话进行调整。提供者 API 使用与纯文本补全模型不同的接口。它们的输入不是单个字符串,而是聊天信息列表,输出则是一条人工智能信息。

GPT-4 和 Anthropic 的 Claude-2 都是作为聊天模型实现。

1.2 LLM

LangChain 中的 LLM 指的是纯文本补全模型。它们封装的 API 将字符串提示作为输入,并输出字符串完成。OpenAI 的 GPT-3 就是作为 LLM 实现。

这两种 API 类型具有不同的输入和输出模式,并非所有模型都一样。不同模型有不同的最佳提示策略,如:

  • Anthropic 模型最适合用 XML
  • OpenAI 模型最适合用 JSON

设计应用程序时牢记这点。示例将使用聊天模型,并提供几种选择:使用 Anthropic 或 OpenAI 等 API,或通过 Ollama 使用本地开源模型。

2 实例

OpenAI与ChatOpenAI

#调用chatmodels,以openai为例

from langchain.chat_models import ChatOpenAI
from langchain.schema.messages import HumanMessage,AIMessage
import os
api_base = os.getenv("OPENAI_PROXY")
api_key = os.getenv("OPENAI_API_KEY")

chat = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0,
    openai_api_key = api_key,
    openai_api_base = api_base

)

messages = [
    AIMessage(role="system",content="你好,我是JavaEdge!"),
    HumanMessage(role="user",content="你好JavaEdge,我是狗剩!"),
    AIMessage(role="system",content="认识你很高兴!"),
    HumanMessage(role="user",content="你知道我叫什么吗?")
]

response = chat.invoke(messages)
print(response)

#print(chat.predict("你好"))

3 流式调用

3.1 为啥要流式输出?

大模型都是一个个字打出来,免得让你觉得他每次神经网络计算太慢了,让你感觉他一直在持续输出。

# LLM类大模型的流式输出方法

from langchain.llms import OpenAI
import os
api_base = os.getenv("OPENAI_PROXY")
api_key = os.getenv("OPENAI_API_KEY")

# 构造一个llm
llm = OpenAI(
    model = "gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key = api_key,
    openai_api_base = api_base,
    max_tokens=512,
)

for chunk in llm.stream("写一首关于秋天的诗歌"):
    print(chunk,end="",flush=False)

所以,token 就很重要。

4 追踪Token的使用

# LLM的toekn追踪
from langchain.llms import OpenAI
from langchain.callbacks import get_openai_callback
import os
api_base = os.getenv("OPENAI_PROXY")
api_key = os.getenv("OPENAI_API_KEY")

# 构造一个llm
llm = OpenAI(
    model = "gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key = api_key,
    openai_api_base = api_base,
    max_tokens=512,
)

with get_openai_callback() as cb:
    result = llm.invoke("给我讲一个笑话")
    print(result)
    print(cb)
# chatmodels的token追踪
from langchain.chat_models import ChatOpenAI
from langchain.callbacks import get_openai_callback
import os
api_base = os.getenv("OPENAI_PROXY")
api_key = os.getenv("OPENAI_API_KEY")

llm = ChatOpenAI(
    model = "gpt-4",
    temperature=0,
    openai_api_key = api_key,
    openai_api_base = api_base,
    max_tokens=512,
)

with get_openai_callback() as cb:
    result = llm.invoke("给我讲一个笑话")
    print(result)
    print(cb)

5 自定义输出

  • 输出函数参数
  • 输出json
  • 输出List
  • 输出日期

讲笑话机器人:希望每次根据指令,可以输出一个这样的笑话(小明是怎么死的?笨死的)

from langchain.llms import  OpenAI
from langchain.output_parsers import PydanticOutputParser
from langchain.prompts import PromptTemplate
from langchain.pydantic_v1 import BaseModel,Field,validator
from typing import  List
import os
api_base = os.getenv("OPENAI_PROXY")
api_key = os.getenv("OPENAI_API_KEY")

# 构造LLM
model = OpenAI(
    model = "gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key = api_key,
    openai_api_base = api_base,
)

#定义个数据模型,用来描述最终的实例结构
class Joke(BaseModel):
    setup:str = Field(description="设置笑话的问题")
    # 笑点
    punchline:str = Field(description="回答笑话的答案")

    #验证问题是否符合要求
    @validator("setup")
    def question_mark(cls,field):
        if field[-1] != "?":
            raise ValueError("不符合预期的问题格式!")
        return field

# 将Joke数据模型传入
parser = PydanticOutputParser(pydantic_object=Joke)


prompt = PromptTemplate(
    template = "回答用户的输入.\n{format_instructions}\n{query}\n",
    input_variables = ["query"],
    partial_variables = {
   "format_instructions":parser.get_format_instructions()}
)

prompt_and_model = prompt | model
out_put = prompt_and_model.invoke({
   "query":"给我讲一个笑话"})
print("out_put:",out_put)
parser.invoke(out_put)

LLM的输出格式化成python list形式,类似['a','b','c']

from langchain.output_parsers import  CommaSeparatedListOutputParser
from langchain.prompts import  PromptTemplate
from langchain.llms import OpenAI
import os
api_base = os.getenv("OPENAI_PROXY")
api_key = os.getenv("OPENAI_API_KEY")

# 构造LLM
model = OpenAI(
    model = "gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key = api_key,
    openai_api_base = api_base,
)

parser = CommaSeparatedListOutputParser()

prompt = PromptTemplate(
    template = "列出5个{subject}.\n{format_instructions}",
    input_variables = ["subject"],
    partial_variables = {
   "format_instructions":parser.get_format_instructions()}
)

_input = prompt.format(subject="常见的小狗的名字")
output = model(_input)
print(output)
# 格式化
parser.parse(output)
目录
相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
AI大模型助力客户对话分析
该AI大模型解决方案利用NLP和机器学习技术分析客户对话,提升服务质量和用户体验。方案实践原理清晰,涵盖数据处理、模型训练等步骤,适合技术背景不同的用户。阿里云提供详尽的部署引导和文档,降低学习成本。Python脚本实用,但需注意环境配置。方案能满足基本对话分析需求,特定场景下需定制化开发。
45 28
|
1天前
|
人工智能
1024 云上见 AI大模型助力客户对话分析 2000个智能台灯等你来领
1024 云上见 AI大模型助力客户对话分析 2000个智能台灯等你来领
13 3
|
2天前
|
敏捷开发 人工智能 运维
汽车革命下半场AI先锋:广汽为新“智”汽车装配大模型“底盘”
汽车革命下半场AI先锋:广汽为新“智”汽车装配大模型“底盘”
|
2天前
|
数据采集 人工智能 自然语言处理
文档智能 & RAG让AI大模型更懂业务
报告概述了阿里云在企业文档处理与问答系统中的应用。通过高效的文档清洗、向量化及RAG技术,实现了快速、准确的问答召回,提升了知识库利用率。系统表现出高自动化、灵活性和语义保留能力,但仍需优化冷启动、多语言支持及复杂查询处理等方面。
|
2天前
|
机器学习/深度学习 数据采集 人工智能
AI 大模型助力客户对话分析
该评测深入分析了“AI大模型助力客户对话分析”方案,涵盖实践原理、实施方法、部署过程、功能满足度及潜在改进空间。通过NLP和机器学习技术,方案能有效提升服务质量和客户体验,但针对特定行业需求尚需定制化开发。
|
2天前
|
人工智能 弹性计算 自然语言处理
触手可及,函数计算玩转 AI 大模型
在AI技术迅速发展的背景下,大模型正推动各行业的智能化转型。企业为抓住机遇,纷纷部署AI大模型。阿里云函数计算凭借按量付费、高弹性和快速交付的特点,成为企业部署AI大模型的理想选择。本文介绍阿里云函数计算的技术解决方案,分析其优势,并通过具体应用场景评测其在AI大模型部署中的表现。
|
2天前
|
人工智能 弹性计算 Serverless
函数计算,如何跟AI大模型互动?
阿里云函数计算提供了部署AI大模型的详细实践指南,包括弹性伸缩和按量付费等优势。建议增加视频教程和专业术语解释,以帮助初学者更快上手。未来可进一步优化成本预测工具、性能测试及高级配置选项,提升用户体验。
13 0
|
6天前
|
人工智能 Serverless
AI助理精准匹配------助力快速搭建Stable Difussion图像生成应用
【10月更文挑战第7天】过去在阿里云社区搭建Stable Diffusion图像生成应用需查阅在线实验室或官方文档,耗时且不便。现阿里云AI助理提供精准匹配服务,直接在首页询问AI助理即可获取详细部署步骤,简化了操作流程,提高了效率。用户可按AI助理提供的步骤快速完成应用创建、参数设置、应用部署及资源释放等操作,轻松体验Stable Diffusion图像生成功能。
|
7天前
|
传感器 机器学习/深度学习 人工智能
AI在智能制造中的革新应用与未来展望
【10月更文挑战第10天】AI在智能制造中的革新应用与未来展望
|
23小时前
|
机器学习/深度学习 人工智能 算法
介绍一下AI在药物研发中的应用。
【10月更文挑战第16天】介绍一下AI在药物研发中的应用。
7 0