当前位置: 首页 > news >正文

可以把网站服务器放在哪里wordpress代码添加

可以把网站服务器放在哪里,wordpress代码添加,嵌入式开发培训,百度只收录网站首页LangChain 中的 聊天模型(Chat Models) 是专为处理对话和结构化交互设计的核心模块,相较于传统的 LLM 模型,它更贴近真实场景中的多轮交互需求,能自动管理对话上下文、调用工具、处理结构化输出等。一、如何&#xff1…

LangChain 中的 聊天模型(Chat Models) 是专为处理对话和结构化交互设计的核心模块,相较于传统的 LLM 模型,它更贴近真实场景中的多轮交互需求,能自动管理对话上下文、调用工具、处理结构化输出等。


一、如何:使用聊天模型进行函数/工具调用

聊天模型支持工具调用功能,能检索用户意图并自动触发预定义的工具,非常适合构建 AI 助手、服务代理等应用。

✅ 关键点:

  • 使用 ChatOpenAI, ChatAnthropic, ChatGoogleGenerativeAI 等 API

  • 配合 ToolExecutor 处理工具调用的逻辑

📌 示例代码:

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calls_agent
from langchain_core.messages import HumanMessage# 工具调用函数
tools = [tool1, tool2]  # 之前定义的工具函数列表# 创建 Agent 和 AgentExecutor
agent = create_tool_calls_agent(ChatOpenAI(temperature=0), tools)
agent_executor = AgentExecutor(agent=agent, tools=tools)# 调用工具
response = agent_executor.invoke({"input": "今天的天气怎么样?","agent_scratchpad": []
})print(response["output"])  # 输出:调用天气工具

二、如何:让模型返回结构化输出

可强制模型生成特定 JSON 格式的结果,常用于后端系统自动解析。

🛠 方式:

  • 配合 output_parser 使用 JsonOutputParserResponseSchema

  • 使用 structured_output 装饰器

📌 示例代码:

from langchain_core.output_parsers import JsonOutputParser
from pydantic import BaseModel, Fieldclass Person(BaseModel):name: str = Field(description="人的名字")age: int = Field(description="人的年龄")parser = JsonOutputParser(pydantic_object=Person)
prompt = PromptTemplate.from_template("根据以下描述提出 JSON\n{description}\n{format_instructions}")chain = prompt | ChatOpenAI() | parserresult = chain.invoke({"description": "这是一个叫李四的人,年龄25岁","format_instructions": parser.get_format_instructions()
})
print(result)  # 输出: {"name": "李四", "age": 25}

三、如何:缓存模型响应以提高性能

对于相同提示可以避免重复调用 API,节省成本并提高响应速度。

✅ 方法:

  • 使用 InMemoryCacheSQLiteCache 进行本地缓存

  • 设置环境变量启用缓存

📌 示例代码:

from langchain.globals import set_llm_cache
from langchain.cache import InMemoryCache
set_llm_cache(InMemoryCache())# 第一次调用
ChatOpenAI().invoke("你好呀") 
# 第二次调用将自动命中缓存
ChatOpenAI().invoke("你好呀")

四、如何:获取日志概率(Log Probabilities)

可用于调试模型输出、判断_token合理性_,仅在部分模型中可用(如 GPT-4o)。

📌 示例代码:

from langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-4o", logprobs=True, top_logprobs=5)
response = llm.invoke("今天天气真好")# 输出 token 情况
print(response.response_metadata.get("logprobs"))

五、如何:创建自定义聊天模型类

常用于封装私有模型、兼容非标准接口。

✅ 继承 BaseChatModel

📌 示例模板:

from langchain.chat_models.base import BaseChatModel
from langchain.schema.messages import BaseMessageclass MyCustomChatModel(BaseChatModel):def _generate(self, messages: list[BaseMessage], **kwargs):# 实现自定义调用逻辑return ChatResult(generations=[ChatGeneration(text="自定义输出")])# 调用
mymodel = MyCustomChatModel()
response = mymodel.invoke([HumanMessage(content="你好")])

六、如何:流式传输响应

适用于 Web、移动端,让用户能立即看到部分结果。

✅ 使用 stream 函数遍历 token 生成流

📌 示例代码:

from langchain_openai import ChatOpenAImodel = ChatOpenAI()
for token in model.stream("讲一个笑话"):print(token.content, end="", flush=True)  # 逐字输出

七、如何:跟踪令牌使用情况

用于分析成本、优化提示词

✅ Chat 模型返回的 response_metadata 包含信息

📌 示例代码:

response = ChatOpenAI().invoke("你好")
usage = response.response_metadata.get("token_usage")
print("Prompt Tokens:", usage.prompt_tokens)
print("Completion Tokens:", usage.completion_tokens)

八、如何:跨提供商跟踪响应元数据

通过 RunLogHandler 或自定义 callbacks 实现标准化日志处理。

📌 示例代码:

from langchain.callbacks.base import BaseCallbackHandlerclass MyHandler(BaseCallbackHandler):def on_llm_start(self, _, __, **kwargs):print("开始生成")ChatOpenAI(callbacks=[MyHandler()]).invoke("你好")

九、如何:使用聊天模型调用工具

使用 ChatAgentTool 构建具备执行能力的 AI 助手

✅ 通过 bind_tools() 绑定函数

📌 示例代码:

from langchain.agents import Tool
from langchain_openai import ChatOpenAIdef get_weather(query):return "晴 20℃"tools = [Tool(name="天气查询", func=get_weather, description="获取天气信息")]
llm_with_tool = ChatOpenAI().bind_tools(tools)response = llm_with_tool.invoke("今天天气怎么样")  # 自动调用工具

十、如何:流式传输工具调用

返回调用名称、参数、进度等中间状态,构建透明交互体验。

✅ 使用 stream() 查看调用过程

📌 示例代码:

model = ChatOpenAI().bind_tools([tool])
for token in model.stream("今天天气如何"):print(token)  # 可查看调用状态

十一、如何:处理速率限制(Rate Limiting)

通过 retrywait 实现更鲁棒的调用

📌 示例代码:

from langchain_openai import ChatOpenAI
import timedef safe_invoke(model, prompt):for attempt in range(3):try:return model.invoke(prompt)except Exception as e:print("Rate limit hit, retrying...")time.sleep(5)return "模型请求失败"safe_invoke(ChatOpenAI(), "给我讲个故事")

十二、如何:少样本提示工具行为

提供 FewShot 样例让模型理解工具的使用方式

✅ 使用 FewShotPromptTemplate

📌 示例代码:

examples = [{"input": "看看今天天气", "tool_call": {"name": "天气", "content": {"city": "北京"}}}
]
prompt = FewShotPromptTemplate.from_examples(examples) + "用户:{input}"

十三、如何:绑定模型特定格式的工具

不同模型对工具定义格式要求不同,需绑定适配器

✅ 使用 tool.bind()ToolWrapper


十四、如何:强制调用特定工具

设置 force_tool_call 参数要求必须调用某工具

✅ OpenAI 支持此功能


十五、如何:使用本地模型(如 Ollama)

LangChain 支持与本地模型库 (如 Ollama、Llama.cpp、HuggingFace Transformers) 直接对接

✅ 示例(使用 Ollama):

from langchain_community.chat_models import ChatOllama
response = ChatOllama(model="llama3").invoke("你好")
print(response.content)

十六、如何:一行代码初始化任何模型

使用 ChatModelProvider 实现代码即插即用模型抽象

✅ 示例(代谢 Provider 实现封装):

from langchain_community.chat_models import ChatOllama, ChatOpenAIdef get_model(provider="openai"):if provider == "openai":return ChatOpenAI()elif provider == "ollama":return ChatOllama(model="llama3")

十七、如何:将多模态数据直接传递给模型

目前部分模型(如 GPT-4 Vision、Gemini)支持图像、视频等输入格式。

✅ LangChain 提供统一 message 封装支撑

from langchain.schema.messages import HumanMessage
from langchain.schema.messages import messages_to_dictmessage = HumanMessage(content=[{"type": "text", "text": "请描述这张图片"},{"type": "image_url", "image_url": "https://example.com/image.jpg"}]
)

🧭 开发建议与学习路径

技能等级推荐内容实践建议
入门了解聊天模型(BindTools, Stream, Prompt)使用 ChatOpenAI 完成工具调用
中级结构化输出、缓存、Callbacks、FewShot创建可持久化的 Agent
高级模型封装、元数据追踪、多供应商切换创建支撑企业微服务的聊天机器人

✅ 总结:

LangChain 聊天模型 集成了提示工程、工具调用、缓存、流式输出、结构化输出等多种能力,是构建现代化 AI 服务的关键组件。掌握这些技能,能快速在企业级项目中构建智能客服、自动化分析、AI助手、RAG实时问答系统等高端能力。

📌 下一阶段推荐:掌握 Agent 设计思想 + LangGraph + LangSmith + Web 集成实战 👉 灵活应对真实企业用例

如需我提供 企业级增强型RAG聊天机器人模板完整项目代码包(Python+FastAPI+前端),可随时告诉我,我可以为你提供完整的部署方案。

http://www.dtcms.com/a/578680.html

相关文章:

  • 使用Requests和LXML实现安居客二手房数据高效爬取
  • 办公用品十大购物网站排名辞职做网站
  • 威海外贸网站建设联系方式网站域名后缀代表什么意思
  • 从生产到质量: RFID 技术赋能汽车制造全链路管控
  • redis中的offset是什么意思
  • soho做网站谷歌推广短视频推广渠道有哪些
  • 广州微信网站建设报价表网站技术方案
  • 【论文精读】Lumiere:重塑视频生成的时空扩散模型
  • 黑龙江住房和城乡建设厅网站襄城县做网站的
  • 外贸网站vps服务器gstatic wordpress
  • 陕西省建设安全协会网站wordpress采集中文
  • 标签Labels、Scheduler:调度器、k8s污点与容忍度
  • 网站开发询价单重庆网站建设报价
  • [论文阅读] AI + 软件工程 | 3340个Python ML项目实证:PyQu工具+61种代码变更,精准提升软件质量!
  • 【数据结构+算法】进栈顺序推算、卡特兰数与逆波兰表达式
  • 网站源码 一品资源网电龙网站建设
  • 文山网站建设代理成都品牌形象设计
  • SEO超级外链工具 - SEO超级外链工具 - 网站自动外链群发与推广优化助手
  • 企业数据查询网站怎么自己做H5网站
  • 单位门户网站可以做百度百科指数型基金是什么意思
  • 详细阐述时间复杂度和空间复杂度定义、算法、和原理,,举例通过C/C++里面说明
  • 神鹰网站建设公司各行业的专业网址论坛资料
  • 慕枫网站建设做网站电话销售的话术
  • 免费网站制作多少钱西宁网站网站建设
  • 【AI应用探索】-8- OpenManus使用及源码解析
  • 网站建设与管理的条件常州建站程序
  • 【Hot100 | 2 LeetCode49 字母异位词分组问题】
  • 百度手机网址提交北京优化生育
  • 网站建设费分多少期摊销买电脑的怎么下wordpress
  • 网站商城网络整合营销购物类网站建设