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

2024-06-24 00:04

本文主要是介绍AI 大模型企业应用实战(10)-LLMs和Chat Models,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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="你好,我是tomie!"),HumanMessage(role="user",content="你好tomie,我是狗剩!"),AIMessage(role="system",content="认识你很高兴!"),HumanMessage(role="user",content="你知道我叫什么吗?")
]response = chat.invoke(messages)
print(response)#print(chat.predict("你好"))

3 流式调用

为啥要流式输出呢?

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

#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)

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM应用开发

    目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!

这篇关于AI 大模型企业应用实战(10)-LLMs和Chat Models的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088655

相关文章

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

AI儿童绘本创作

之前分享过AI儿童绘画的项目,但是主要问题是角色一致要花费很长的时间! 今天发现了这款,非常奈斯! 只需输入故事主题、风格、模板,软件就会自动创作故事内容,自动生成插画配图,自动根据模板生成成品,测试效果如下图。 变现方式:生成儿童绘本发布到各平台,吸引宝妈群体进私域。  百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

【新闻】AI程序员要来了吗?阿里云官宣

内容提要 6 月 21 日,在阿里云上海 AI 峰会上,阿里云宣布推出首个AI 程序员。 据介绍,这个AI程序员具备架构师、开发工程师、测试工程师等多种岗位的技能,能一站式自主完成任务分解、代码编写、测试、问题修复、代码提交整个过程,最快分钟级即可完成应用开发,大幅提升研发效率。 近段时间以来,有关AI的实践应用突破不断,全球开发者加速研发步伐。有业内人士坦言,随着大模型性能逐渐提升,AI应

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

模型压缩综述

https://www.cnblogs.com/shixiangwan/p/9015010.html