NLP 部署实操:Langchain-Chatchat 配置文件深度修改与精细化调试

继完成 Langchain-Chatchat 的完整部署与各类部署坑点排查后,本次将聚焦项目落地核心环节 ------API 接口实操应用。Langchain-Chatchat 作为轻量化、高易用性的大模型应用框架,其封装的标准化 API 是实现模型能力对接业务系统、完成二次开发的关键。本文将系统化梳理框架各类核心 API 的调用方式、参数配置、请求规范及工具调用等实操要点,清晰拆解接口使用中的核心逻辑与常见问题,为开发者快速打通模型部署与业务应用链路提供实操指引,助力高效实现大模型能力的落地复用。


1 配置文件介绍

1.1 模型配置文件介绍

通过model_settings.yaml文件可以看到项目支持的平台:

plaintext 复制代码
# # 可选值:['xinference', 'ollama', 'oneapi', 'fastchat', 'openai', 'custom openai']

有这几个平台可以用,你只需要关注你使用的平台模型 ,如下图所示:

Langchain-Chatchat会默认自动加载,意思就是你可以都用,不局限于某一平台的模型,你可以使用ollama平台嵌入模型的同时,使用openai的llm模型。所以,你只需要关注你使用什么模型,然添加上去就可以。

1.2 模型配置文件设置

1.2.1 下载函数

shell 复制代码
ollama pull qwen2.5:7b
ollama pull smartcreation/bge-large-zh-v1.5

1.2.2 配置下载的函数

例如你使用ollama的qwen2.5:7b模型和bge-large-zh-v1.5设置如下:DEFAULT_LLM_MODEL 设置成qwen2.5:7bDEFAULT_EMBEDDING_MODEL 设置成smartcreation/bge-large-zh-v1.5SUPPORT_AGENT_MODELS 也加上qwen2.5:7b ,这里注意smartcreation/,一定要加上,不然会报错。

action_model->prompt_name换成qwen,至于这里有多少种设置方法,可以去看prompt_settings.yaml.

api_base_url这里设置成正确的地址,如果是本地的,需要设置成:http://127.0.0.1:11434/v1

如果不是本地的需要查看一下自己局域网下的是否开放。

1.3 局域网内访问

一下命令查看是否开放:

shell 复制代码
# windows
netstat -aon|findstr 11434
# linux
netstat -aon|grep 11434

如下图所示:

需要是0.0.0.0 才表示开放局域网访问,如果没有开放,需要设置一下:

windows设置如下:

linux设置如下:

shell 复制代码
sudo systemctl stop ollama
sudo vim /etc/systemd/system/ollama.service
# 在ollama.service中添加这一段
Environment="OLLAMA_HOST=0.0.0.0:11434"

sudo systemctl daemon-reload
sudo systemctl start ollama
# 开启自启动
sudo systemctl enable ollama

2 自定义工具函数

2.1 编写工具函数

Langchain-Chatchat/libs/chatchat-server/chatchat/server/agent/tools_factory 目录下编写自定义function_call函数,比如:

python 复制代码
# get_kun_info.py
from .tools_registry import regist_tool
from langchain_chatchat.agent_toolkits.all_tools.tool import BaseToolOutput

@regist_tool(title="查询蔡徐坤个人信息接口",
             description="查询蔡徐坤个人信息的接口,比如说问蔡徐坤是谁,蔡徐坤这个人怎么样",)
def get_kun_info():
    """查询蔡徐坤个人信息的接口,比如说问蔡徐坤是谁,蔡徐坤这个人怎么样"""
    kun_info = """蔡徐坤(KUN),男,汉族,1998年8月2日生于浙江温州,籍贯湖南吉首,中国内地顶尖唱跳男歌手、原创音乐制作人、演员、MV导演。
            唱跳为骨,Rap为魂,篮球为趣,这份融热爱与天赋的表达,让他跳出世俗的框架,自成一派艺术风骨。
            他于浮华之中坚守本心,于浪潮之巅雕琢自我,以原创之力扎根音乐,以无畏之姿定义风格,在华语乐坛的版图里,
            刻下了独属于自己的鲜明印记,是新生代中兼具颜值、实力与创作力的标杆人物。"""
    return BaseToolOutput(kun_info, format="text")

Langchain-Chatchat/libs/chatchat-server/chatchat/server/agent/tools_factory/__init__.py中导入:

shell 复制代码
from .arxiv import arxiv
from .calculate import calculate
from .search_internet import search_internet
from .search_local_knowledgebase import search_local_knowledgebase
from .search_youtube import search_youtube
from .shell import shell
from .text2image import text2images
from .text2sql import text2sql
from .weather_check import weather_check
from .wolfram import wolfram
from .amap_poi_search import amap_poi_search
from .amap_weather import amap_weather
from .wikipedia_search import wikipedia_search
from .text2promql import text2promql
from .url_reader import url_reader

from .get_kun_info import get_kun_info

2.2 测试工具函数

启动之前将agent_type修改成qwen,至于这里有多少种设置方法,也得去看prompt_settings.yaml

2.2.1 测试webui

shell 复制代码
export CHATCHAT_ROOT=xxx/chatchat_data/
cd libs/chatchat-server
# 启用webui和api
python chatchat/cli.py start -a

可以看到可以正确调用我们定义的函数:

2.2.2 测试api

shell 复制代码
# call_agent.py

import requests
base_url = "http://192.168.1.253:7861/chat"
tools = list(requests.get(f"http://192.168.1.253:7861/tools").json()["data"])
data = {
    "model": "qwen2.5:7b",
    "messages": [
        {"role": "user", "content": "蔡徐坤个人信息"},
    ],
    "stream": True,
    "temperature": 0.7,
    "tools": tools,
}


response = requests.post(f"{base_url}/chat/completions", json=data, stream=True)
for line in response.iter_content(None, decode_unicode=True):
    print(line)

可以看到输出的信息正是我们定义的函数:

3 遇到的报错

3.1 chatchat kb -r报错

ERROR | chatchat.init_database:worker:61 - Error raised by inference API HTTP code: 500, {"error":"the input length exceeds the context length"}

github上有解决方法,这里贴出来:

找到你初始化出来的文件kb_settings.yaml,然后将chunk_size 设 400 ,chunk_overlap 设置为50 ,如下图所示:

总结

本文围绕 Langchain-Chatchat 的 API 接口实操应用展开,先介绍其核心配置要点,需在 model_settings.yaml 配置 Ollama 相关模型与接口地址,本地部署需开放局域网访问权限,保证跨设备调用。其次讲解自定义工具函数开发,在指定目录编写带注册装饰器的工具函数并完成导入,即可实现功能拓展。最后给出 API 调用测试方式,支持 WebUI 和 Python 脚本流式请求,并针对知识库加载的上下文超长报错,提供了调整 kb_settings.yaml 文件分片参数的有效解决方案。本文实操性强,可助力开发者快速实现大模型能力的业务落地与二次开发。

相关推荐
辰海Coding7 小时前
MiniSpring框架学习-完成的 IoC 容器
java·spring boot·学习·架构
小小编程路8 小时前
C++ 多线程与并发
java·jvm·c++
AI视觉网奇8 小时前
linux 检索库 判断库是否支持
java·linux·服务器
她的男孩8 小时前
从零搭一个企业后台,为什么我把能力拆成 Starter 和 Plugin
java·后端·架构
RainCity8 小时前
Java Swing 自定义组件库分享(七)
java·笔记·后端
Sam_Deep_Thinking8 小时前
连锁门店的外卖订单平台对接
java·微服务·架构·系统架构
_遥远的救世主_9 小时前
从一次结果集密集型查询 OOM 看 Java 服务的稳定性架构治理
java·后端
一楼的猫9 小时前
从工具链视角对比:番茄作家助手 vs 第三方写作辅助方案
java·服务器·开发语言·前端·学习·chatgpt·ai写作
likerhood9 小时前
Java static 关键字从浅入深
java·开发语言
大模型最新论文速读10 小时前
PreFT:只在 prefill 时使用 LoRA,推理速度翻倍效果不降
论文阅读·人工智能·深度学习·机器学习·自然语言处理