继完成 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:7b ,DEFAULT_EMBEDDING_MODEL 设置成smartcreation/bge-large-zh-v1.5 ,SUPPORT_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 文件分片参数的有效解决方案。本文实操性强,可助力开发者快速实现大模型能力的业务落地与二次开发。