我给 OpenClaw Dreaming 修了一个 Bug——正则表达式引发的"鬼打墙"
Chainlit 使用 Langflow 后端
LangFlow是一个针对LangChain的GUI,它采用了反应流设计,提供了一种轻松的方式,通过拖放组件和聊天框来实验和原型化流程。 LangFlow允许您探索不同的大语言模型、prompt参数、链配置和代理行为,并跟踪代理的思维过程。
Chainlit是一个开源Python包,旨在彻底改变构建和共享语言模型(LM)应用程序的方式。Chainlit可以创建用户界面(UI),类似于由OpenAI开发的ChatGPT用户界面,Chainlit可以开发类
本文将介绍 Chainlit 使用 LangFlow构建 LLM 的工作流,将 LangFlow 发布的服务展现到Chainlit 前端

自定义 LangChain OpenAI 聊天模型(CustomChatOpenAI)重构实践
自定义 LangChain OpenAI 聊天模型(CustomChatOpenAI)重构实践
在 AI 应用开发中,LangChain 提供了强大的链式调用能力,而 OpenAI 的接口则是主流大模型服务的事实标准。本文将介绍如何基于 LangChain 的 ChatOpenAI,重构并扩展出一个支持推理内容(reasoning_content)流式输出的自定义聊天模型——CustomChatOpenAI,并详细解析其设计思路与实现细节。
背景与需求
在实际业务中,除了常规的对话内容(content),我们还希望模型能输出推理过程(reasoning_content),并且在流式响应时能以 <think>...</think> 标签包裹推理内容,便于前端或下游系统做进一步处理。原生的 ChatOpenAI 并不支持这一需求,因此需要自定义扩展。
设计思路
1. 继承与扩展
我们通过继承 ChatOpenAI,重写其核心方法,增加对 reasoning_content 的处理能力。核心思路如下:
- 流式输出:在流式响应中,优先检测
reasoning_content,并用<think>...</think>标签包裹,仅允许出现一次,避免重复嵌套。 - 普通输出:在非流式响应中,将推理内容和最终回复拼接输出,格式统一。
2. 关键方法解析
_create_client
重写客户端创建方法,支持自定义 base_url 和 api_key,兼容多种 OpenAI 兼容服务。
_process_stream
核心流式处理逻辑。遍历大模型返回的流式数据块,判断 delta 中是否包含 reasoning_content 或 content,并按需插入 <think> 标签。例如:
用GPT-4o写了一个端口转发程序
昨天一个同事问我,类似阿里的PAI平台,当你在jupyter或者code环境的终端中,启动一个带网络端口的app,会自动启动一个端口转发,把你的app应用端口,映射到一个当前网站的url中,类似行为的还有code-server,整个过程是自动的,并且平台会提示你,你的端口被转发到了xxx.
