# 探索ChatPremAI:利用LangChain构建强大对话应用
## 引言
在这个AI快速发展的时代,能否高效地构建强大的对话应用对开发者来说至关重要。ChatPremAI作为一体化平台,通过与LangChain结合,大幅简化了生成式AI应用的开发流程。本篇文章将引导你如何使用ChatPremAI与LangChain整合,为你的应用增添AI驱动的对话功能。
## 主要内容
### 1. 安装与设置
在开始之前,请确保已在PremAI注册并创建项目。以下是安装必需的Python库的命令:
```bash
pip install premai langchain
创建项目后,获取你的API密钥。然后,设置环境变量:
import os
import getpass
if os.environ.get("PREMAI_API_KEY") is None:
os.environ["PREMAI_API_KEY"] = getpass.getpass("PremAI API Key:")
2. 设置LangChain中的PremAI客户端
导入所需模块,并设置你的客户端实例:
from langchain_community.chat_models import ChatPremAI
from langchain_core.messages import HumanMessage, SystemMessage
chat = ChatPremAI(project_id=1234, model_name="gpt-4o") # 使用API代理服务提高访问稳定性
3. 实现对话生成
ChatPremAI支持invoke和stream方法。这里是如何生成对话的示例:
human_message = HumanMessage(content="Who are you?")
response = chat.invoke([human_message])
print(response.content)
4. 使用系统消息自定义对话行为
可以通过系统消息自定义AI的对话风格:
system_message = SystemMessage(content="You are a friendly assistant.")
response = chat.invoke([system_message, human_message])
5. 使用Prem Repositories进行RAG生成
Prem Repositories允许将文档连接到大语言模型中:
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)
代码示例
以下是如何绑定工具以实现基于函数调用的示例:
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:
"""Adds a and b."""
return a + b
@tool("multiply", args_schema=OperationInput, return_direct=True)
def multiply(a: int, b: int) -> int:
"""Multiplies a and b."""
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)
# 处理工具调用结果
from langchain_core.messages import ToolMessage
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代理服务。
- 参数覆盖问题:请注意,设置客户端参数会覆盖默认配置。
总结和进一步学习资源
PremAI和LangChain的结合为开发者提供了强大的工具来构建生成式AI应用。了解更多细节和高级功能请查阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---