
使用这些基本 REST API 最佳实践构建出色的 API
Model I/O是什么?在LangChain中,模型输入/输出(Model I/O)是指与 LLM 进行交互的组件,它弥合了原始输入数据和结构化输出之间的鸿沟。
Model I/O由几个部分组成。
Model I/O能干什么?
封装模型API和处理输入输出数据,实现了模型的顺畅交互,使得用户可以方便地利用模型完成各种任务。
Model I/O的工作流程:格式化原始输入数据,将其传递给模型以获取预测结果,并将输出解析为结构化格式,以供下游组件或应用程序使用。
Model I/O流程包含以下三个核心步骤:
Model I/O的核心组件:包括用于接收和生成文本的语言模型、指导输入格式的提示模板、筛选训练数据的示例选择器,以及解析模型输出的输出解析器。
LLM(大语言模型):简化了自定义LLM的开发过程,实现了LLM响应的缓存管理以降低成本和加速应用,支持LLM流式传输响应以提升效率。
import os
from langchain.llms import OpenAl
from langchain.prompts import PromptTemplate
# 设置 OpenAl API密钥
os.environ["OPENAIAPI_KEY"]="YOUR_OPENAI_API KEY"
# 创建一个封装了 OpenAl GPT 模型的自定义类
class CustomLLM:
def init (self, model name="gpt-3.5-turbo",temperature=0.9):
self.llm = OpenAl(model name=model name, temperature=temperature)
self.prompt template= PromptTemplate(
input_variables=["food"],
template="What are 5 vacation destinations for someone who likes to eat ffood}?"
)
def get_vacation_destinations(self, food):
prompt = self.prompt template.format(food=food)
return self.llm(prompt)
# 使用自定义类
custom_lm= CustomLLM()
print(custom llm.get vacation destinations("dessert"))
LLM
提供者返回的最终结果。import openai
# 设置您的OpenAI API密钥
openai.api_key="YOUR API KEY"
def generate text and track tokens(prompt, max tokens=None, temperature=0.5):
# 使用OpenAl的Completion APl生成文本
response =openai.Completion.create(
engine="text-embedding-ada-002",#您可以更改为所需的模型,例如"text-generation-gpt-3.5-t
prompt=prompt,
max tokens=max tokens,
temperature=temperature
)
# 从响应中提取生成的文本和使用的token数量
generated text=response["choices"1[0]["text"]
used tokens =response["choices"1[0]["tokens_used"]#注意:不是所有模型都返回tokens_used字
# 打印结果和token使用情况
print(f"Generated Text: {generated text}")
print(f"Tokens Used: fused tokens}")
return generated text,used tokens
ChatModel(对话模型):实现缓存层减少API调用以降低成本、提升响应速度,同时提供简洁语法和转换器简化模型管理,支持流式传输响应以优化用户体验。
ChatModel
提供者返回的最终结果。import openai
# 设置您的API密钥
openai.api_key="您的API密钥"
# 定义一个函数来发出API请求并跟踪令牌使用情况
def chat and track tokens(model, messages, max tokens=None):
response =openai.ChatCompletion.create(
model=model,
messages=messages,
max tokens=max tokens
)
# 从响应中提取使用的令牌数量
used tokens = response["usage"]["total tokens"]
# 使用响应和令牌使用信息做某事
print(f"啊应: {response['choices'][0]['message']['content']}")
print(f"使用的令牌: {used _tokens}")
文章转自微信公众号@架构师带你玩转AI