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

相关推荐
侠客行031717 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪17 小时前
深入浅出LangChain4J
java·langchain·llm
、BeYourself18 小时前
LangChain4j 流式响应
langchain
、BeYourself19 小时前
LangChain4j之Chat and Language
langchain
老毛肚19 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎19 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
陈天伟教授19 小时前
人工智能应用- 语言理解:04.大语言模型
人工智能·语言模型·自然语言处理
Yvonne爱编码19 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚19 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂19 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言