前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI大模型企业应用实战(07)-LangChain的Hello World项目

AI大模型企业应用实战(07)-LangChain的Hello World项目

原创
作者头像
JavaEdge
发布2024-08-12 22:27:55
920
发布2024-08-12 22:27:55
举报
文章被收录于专栏:大模型应用开发

1 创建一个LLM

  • 自有算力平台+开源大模型(需要有庞大的GPU资源)企业自己训练数据
  • 第三方大模型API(openai/百度文心/阿里通义千问...)数据无所谓

让LLM给孩子起具有中国特色的名字。

在LangChain中最基本的功能就是根据文本提示来生成新的文本

使用方法:predict

生成结果根据你调用的模型不同而会产生非常不同的结果差距,并且你的模型的tempurature参数也会直接影响最终结果(即LLM的灵敏度)。

2 自定义提示词模版

  • 将提问的上下文模版化
  • 支持参数传入

让LLM给孩子起具有美国特色的名字。

将提示词模版化后会产生很多灵活多变的应用,尤其当它支持参数定义时。

使用方法

langchain.prompts

3 输出解释器

  • 将LLM输出的结果各种格式化
  • 支持类似json等结构化数据输出

让LLM给孩子起4个有中国特色的名字,并以数组格式输出而不是文本。

与chatGPT只能输出文本不同,langchain允许用户自定义输出解释器,将生成文本转化为序列数据使用方法:

langchain.schema

第一个实例

让LLM以人机对话的形式输出4个名字

名字和性别可以根据用户输出来相应输出

输出格式定义为数组

4 开始运行

4.1 引入openai key

设置环境变量:

代码语言:python
代码运行次数:0
复制
import os
os.environ["OPENAI_API_KEY"] = "xxx"
# 为了科学上网,所以需要添加
os.environ["OPENAI_PROXY"] = "xxx"

从环境变量读取:

代码语言:python
代码运行次数:0
复制
import openai
import os
openai.api_base =os.environ.get("OPENAI_PROXY")
openai.api_key = os.environ.get("OPENAI_API_KEY")
print("OPENAI_API_KEY:", openai_api_key)
print("OPENAI_PROXY:", openai_api_base)

4.2 运行前查看下安装情况

代码语言:python
代码运行次数:0
复制
! pip show langchain
! pip show openai

4.3 openai 官方SDK

代码语言:python
代码运行次数:0
复制
import openai
import os

openai.api_base =os.environ.get("OPENAI_PROXY")
openai.api_key = os.environ.get("OPENAI_API_KEY")

messages = [
{"role": "user", "content": "介绍下你自己"}
]

res = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=messages,
    stream=False,
)
print(res['choices'][0]['message']['content'])

4.4 使用langchain调用

代码语言:python
代码运行次数:0
复制
from langchain.llms import OpenAI
import os

api_base =os.environ.get("OPENAI_PROXY")
api_key = os.environ.get("OPENAI_API_KEY")

llm = OpenAI(
    model="gpt-3.5-turbo",
    temperature=0,
    openai_api_key=api_key,
    openai_api_base=api_base
    )
llm.predict("介绍下你自己")

4.5 起名大师demo

代码语言:python
代码运行次数:0
复制
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
import os
api_base =os.environ.get("OPENAI_PROXY")
api_key = os.environ.get("OPENAI_API_KEY")

llm = OpenAI(
    model="gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key=api_key,
    openai_api_base=api_base
    )
prompt = PromptTemplate.from_template("你是一个起名大师,请模仿示例起3个{county}名字,比如男孩经常被叫做{boy},女孩经常被叫做{girl}")
message = prompt.format(county="中国特色的",boy="狗蛋",girl="翠花")
print(message)
llm.predict(message)

格式化输出

代码语言:python
代码运行次数:0
复制
from langchain.schema import BaseOutputParser
#自定义class,继承了BaseOutputParser
class CommaSeparatedListOutputParser(BaseOutputParser):
    """Parse the output of an LLM call to a comma-separated list."""


    def parse(self, text: str):
        """Parse the output of an LLM call."""
        return text.strip().split(", ")

CommaSeparatedListOutputParser().parse("hi, bye")
代码语言:bash
复制
['hi', 'bye']

完整案例

代码语言:python
代码运行次数:0
复制
#起名大师,输出格式为一个数组
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
import os
from langchain.schema import BaseOutputParser

#自定义类
class CommaSeparatedListOutputParser(BaseOutputParser):
    """Parse the output of an LLM call to a comma-separated list."""

    def parse(self, text: str):
        """Parse the output of an LLM call."""
        print(text)
        return text.strip().split(",")


api_base = os.getenv("OPENAI_API_BASE")
api_key = os.getenv("OPENAI_KEY")
llm = OpenAI(
    model="gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key=api_key,
    openai_api_base=api_base
    )
prompt = PromptTemplate.from_template("你是一个起名大师,请模仿示例起3个具有{county}特色的名字,示例:男孩常用名{boy},女孩常用名{girl}。请返回以逗号分隔的列表形式。仅返回逗号分隔的列表,不要返回其他内容。")
message = prompt.format(county="美国男孩",boy="sam",girl="lucy")
print(message)
strs = llm.predict(message)
CommaSeparatedListOutputParser().parse(strs)
代码语言:bash
复制
['jack', ' michael', ' jason']

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 创建一个LLM
  • 2 自定义提示词模版
    • 使用方法
    • 3 输出解释器
      • 第一个实例
      • 4 开始运行
        • 4.1 引入openai key
          • 4.2 运行前查看下安装情况
            • 4.3 openai 官方SDK
              • 4.4 使用langchain调用
                • 4.5 起名大师demo
                  • 格式化输出
                    • 完整案例
                    相关产品与服务
                    GPU 云服务器
                    GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档