用LangChain互动ChatPremAI:简化生成AI应用的开发
引言
在当今快节奏的技术世界中,生成式AI变得越来越重要。PremAI是一个简化创建生成式AI应用的一站式平台,旨在帮助开发者专注于提升用户体验和推动应用增长。本文将介绍如何使用LangChain与ChatPremAI互动,快速创建强大且可用于生产环境的应用。
主要内容
安装和设置
首先,我们需要安装langchain和premai-sdk。可以使用以下命令进行安装:
pip install premai langchain
在继续之前,请确保您已在PremAI上创建账户并创建了项目。如果还没有,请参考快速入门指南来开始使用PremAI平台。创建第一个项目并获取您的API密钥。
设置LangChain中的PremAI客户端
导入所需的模块,然后设置客户端。假设我们的project_id是8,但请确保使用您自己的项目ID,否则会抛出错误。
import getpass
import os
from langchain_community.chat_models import ChatPremAI
from langchain_core.messages import HumanMessage, SystemMessage
# 设置环境变量
if os.environ.get("PREMAI_API_KEY") is None:
os.environ["PREMAI_API_KEY"] = getpass.getpass("PremAI API Key:")
# 初始化ChatPremAI客户端
chat = ChatPremAI(project_id=1234, model_name="gpt-4o") # 使用API代理服务提高访问稳定性
Chat Completions
ChatPremAI支持两种方法:invoke(相当于generate)和stream。前者会给出静态结果,而后者会逐个令牌地流式传输。以下是如何生成聊天类完成的示例:
human_message = HumanMessage(content="Who are you?")
response = chat.invoke([human_message])
print(response.content)
输出结果:
I am an AI language model created by OpenAI, designed to assist with answering questions and providing information based on the context provided. How can I help you today?
您可以通过传递不同的系统提示来覆盖默认的系统提示:
system_message = SystemMessage(content="You are a friendly assistant.")
response = chat.invoke([system_message, human_message])
print(response.content)
使用Prem Repositories进行检索增强生成
Prem Repositories允许用户上传文档并将这些库连接到LLM。以下是如何在LangChain中使用这些功能:
query = "Which models are used for dense retrieval"
repository_ids = [1985]
repositories = dict(ids=repository_ids, similarity_threshold=0.3, limit=3)
response = chat.invoke(query, max_tokens=100, repositories=repositories)
print(response.content)
使用Prem Templates
使用Prem Templates可以简化提示模板的编写和管理。在Prem平台上配置模板后,可以在LangChain中通过模板ID进行调用:
human_messages = [
HumanMessage(content="Shawn", id="name"),
HumanMessage(content="22", id="age"),
]
template_id = "78069ce8-xxxxx-xxxxx-xxxx-xxx"
response = chat.invoke(human_messages, template_id=template_id)
print(response.content)
流式传输
以下是如何使用流式传输令牌的示例:
import sys
for chunk in chat.stream("hello how are you"):
sys.stdout.write(chunk.content)
sys.stdout.flush()
工具调用
LangChain PremAI支持工具调用。以下是如何定义和绑定工具的方法:
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_core.tools import tool
class OperationInput(BaseModel):
a: int = Field(description="First number")
b: int = Field(description="Second number")
@tool("add", args_schema=OperationInput, return_direct=True)
def add(a: int, b: int) -> int:
return a + b
@tool("multiply", args_schema=OperationInput, return_direct=True)
def multiply(a: int, b: int) -> int:
return a * b
tools = [add, multiply]
llm_with_tools = chat.bind_tools(tools)
query = "What is 3 * 12? Also, what is 11 + 49?"
messages = [HumanMessage(query)]
ai_msg = llm_with_tools.invoke(messages)
for tool_call in ai_msg.tool_calls:
selected_tool = {"add": add, "multiply": multiply}[tool_call["name"].lower()]
tool_output = selected_tool.invoke(tool_call["args"])
messages.append(ToolMessage(tool_output, tool_call_id=tool_call["id"]))
response = llm_with_tools.invoke(messages)
print(response.content)
常见问题和解决方案
问题:访问API时遇到网络限制
一些地区的开发者可能会遇到访问API的网络限制。建议使用API代理服务来提高访问稳定性。
问题:参数不支持
如果您在调用时传递了不支持的参数,系统会抛出警告。在开发过程中请注意检查参数支持情况。
总结和进一步学习资源
本文介绍了如何使用LangChain与ChatPremAI互动,并展示了一些常见功能的示例。通过这些示例,您可以快速上手并创建强大的生成式AI应用。对于想深入学习的读者,以下资源可能会有所帮助:
参考资料
- PremAI Official Documentation
- LangChain Official Documentation
- LangChain Community Chat Models
- LangChain Core Messages
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---