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 文件分片参数的有效解决方案。本文实操性强,可助力开发者快速实现大模型能力的业务落地与二次开发。

相关推荐
电商API&Tina3 分钟前
电商数据采集 API 接口 全维度解析(技术 + 商业 + 合规)
java·大数据·开发语言·数据库·人工智能·json
liwulin050614 分钟前
【JSON】使用com.fasterxml.jackson解析json字符串
java·数据库·json
阿杰学AI30 分钟前
AI核心知识79——大语言模型之Knowledge Conflict(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·rag·知识冲突
what丶k33 分钟前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
星火开发设计37 分钟前
C++ 输入输出流:cin 与 cout 的基础用法
java·开发语言·c++·学习·算法·编程·知识
毕设源码-邱学长1 小时前
【开题答辩全过程】以 基于Springboot的酒店住宿信息管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
仟濹1 小时前
【Java加强】1 异常 | 打卡day1
java·开发语言·python
海绵宝宝de派小星1 小时前
传统NLP vs 深度学习NLP
人工智能·深度学习·ai·自然语言处理
AllData公司负责人1 小时前
【亲测好用】实时开发平台能力演示
java·c语言·数据库
pcm1235671 小时前
设计C/S架构的IM通信软件(3)
java·c语言·架构