网站下载app连接怎么做的,门户网站维护,常州百度快速优化,软件app开发定制前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站。
本文中#xff0c;我们会通过一个简单的例子来展示如何使用 langchain 来调用大模型的 chat API#xff08;使用 Chat Model#xff…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站。
本文中我们会通过一个简单的例子来展示如何使用 langchain 来调用大模型的 chat API使用 Chat Model。 这个例子前面也有使用过但是前面还没有针对里面的内容进行详细的说明。
配置 key 的文档请看 langchain 入门指南一- 准备 API KEY
依赖安装
pip install -U langchain-openai示例
下面的 ChatOpenAI 表示我们要使用的是 Chat Model顾名思义这个模型是用来进行对话的这也是我们最常用的一种模型。
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessagechat ChatOpenAI(modelyi-large,temperature0.3,max_tokens200,api_keyyour key,base_urlhttps://api.lingyiwanwu.com/v1
)messages [SystemMessage(content你是一名精通了 golang 的专家),HumanMessage(content写一个 golang 的 hello world 程序),
]response chat.invoke(messages)print(response.content)ChatOpenAI 说明
使用 ChatOpenAI 类我们可以调用 chat API。ChatOpenAI 类的构造函数有以下参数
ChatOpenAI 参数
model模型名称例如 yi-large零一万物gpt-3.5-turboOpenAI HK等。temperature用于控制生成文本的多样性值越大生成的文本越多样化。max_tokens生成文本的最大长度。我们的输入和 LLM 的输出都需要消耗 token 数所以如果只是测试可以控制一下输出的 token 数量api_keyAPI 密钥支持多种不只是 OpenAI 的。不填写的话会从环境变量中读取对应的环境变量是 OPENAI_API_KEY。base_urlAPI 的接口地址。不填写的话会从环境变量中读取对应的环境变量是 OPENAI_BASE_URL。timeout超时时间单位是秒。max_retries: 最大重试次数。
invoke 方法的参数说明
我们可以看到上面的例子传递了一个 messages 参数这个参数是一个列表里面包含了 HumanMessage 和 SystemMessage。
在其他地方我们可能会看到其他形式的参数它实际上也支持很多种形式例如
元组列表
from langchain_openai import ChatOpenAIchat ChatOpenAI(modelyi-large,temperature0.3,max_tokens200,api_keyyour key,base_urlhttps://api.lingyiwanwu.com/v1,
)messages [(system, 你是一名精通了 golang 的专家),(human, 写一个 golang 的 hello world 程序)
]response chat.invoke(messages)print(response.content)BaseMessage 列表
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessagechat ChatOpenAI(modelyi-large,temperature0.3,max_tokens200,api_keyyour key,base_urlhttps://api.lingyiwanwu.com/v1,
)messages [SystemMessage(content你是一名精通了 golang 的专家),HumanMessage(content写一个 golang 的 hello world 程序),
]response chat.invoke(messages)print(response.content)字符串
from langchain_openai import ChatOpenAIchat ChatOpenAI(modelyi-large,temperature0.3,max_tokens200,api_keyyour key,base_urlhttps://api.lingyiwanwu.com/v1,
)# 这个字符串参数会被转换为 HumanMessage
response chat.invoke(使用 golang 写一个 hello world 程序)print(response.content)字符串列表
from langchain_openai import ChatOpenAIchat ChatOpenAI(modelyi-large,temperature0.3,max_tokens200,api_keyyour key,base_urlhttps://api.lingyiwanwu.com/v1,
)messages [你是一名精通了 golang 的专家,写一个 golang 的 hello world 程序,
]response chat.invoke(messages)print(response.content)invoke 方法的返回值
上面是直接打印了返回值的 content 属性实际上返回值中包含了其他一些有用的信息
{lc: 1,type: constructor,id: [langchain,schema,messages,AIMessage],kwargs: {content: ...省略...,response_metadata: {token_usage: {completion_tokens: 200,prompt_tokens: 35,total_tokens: 235},model_name: yi-large,system_fingerprint: null,finish_reason: length,logprobs: null},type: ai,id: run-29131a4f-e792-4c9e-8cf5-490afed94176-0,usage_metadata: {input_tokens: 35,output_tokens: 200,total_tokens: 235},tool_calls: [],invalid_tool_calls: []}
}一些字段说明
completion_tokens/output_tokens 是生成的文本的 token 数量。prompt_tokens/input_tokens 是输入的 token 数量。total_tokens 是单次请求总的 token 数量。
在实际的应用中我们需要注意使用的 token 的数量防止消耗太多的 token因为 token 是要花钱来购买的。 如果我们是为其他人提供服务可能就需要针对不同的用户来统计 token 的使用情况以便计费。