对刚接触 LLM 大模型的程序员来说,复杂的 API 调用、多样的模型适配、繁琐的环境配置往往成为入门拦路虎。而 llm-action 作为一款轻量级 LLM 开发工具,凭借 “极简 API、多模型兼容、低门槛集成” 的核心优势,让零基础开发者也能快速上手大模型开发。本文以程序员视角,结合完整代码示例,从环境搭建、核心功能实战到项目集成,详解 llm-action 的使用全流程,帮你实现从 “LLM 小白” 到 “实战高手” 的跨越。

llm-action 核心价值与环境搭建

llm-action 的核心价值在于 “简化 LLM 开发流程”—— 它封装了主流大模型(OpenAI、本地化 Llama、Qwen 等)的调用逻辑,提供统一 API 接口,无需关注不同模型的底层差异;同时支持函数调用、流式输出等高频功能,开箱即用。对入门者而言,无需深入理解 LLM 原理,只需几行代码就能实现大模型交互。

工具核心优势

  1. 多模型兼容:一套 API 适配 OpenAI(GPT-3.5/4)、本地化模型(Llama 3、Qwen-7B)、开源模型服务(ChatGLM、InternLM),切换模型无需修改核心代码;
  1. 低依赖轻量:仅依赖requests和pydantic,安装包体积不足 100KB,避免复杂环境冲突;
  1. 功能开箱即用:内置文本生成、函数调用、流式输出、上下文管理,满足 80% 的开发需求;
  1. 易集成:支持 Python 项目无缝集成,可快速嵌入 Web 服务、脚本工具、自动化流程。

环境搭建与初始化

llm-action 的环境搭建仅需 3 步,支持 Windows、Linux、macOS 全平台,Python 3.8 + 即可运行。

1. 安装 llm-action


# 基础安装(支持OpenAI等在线模型)

pip install llm-action

# 完整安装(支持本地化模型,需额外依赖)

pip install llm-action[local] # 包含transformers、torch等本地化依赖

2. 初始化配置

llm-action 通过配置文件或代码初始化,支持在线模型 API 密钥、本地化模型路径等参数设置。创建llm_config.py配置文件:


# llm_config.py:llm-action配置文件

from llm_action import LLMConfig, ModelType

# 配置在线模型(以OpenAI为例)

openai_config = LLMConfig(

model_type=ModelType.OPENAI, # 模型类型

api_key="sk-your-openai-api-key", # 替换为你的API密钥

model_name="gpt-3.5-turbo", # 模型名称

temperature=0.7, # 生成随机性(0-1)

max_tokens=1024 # 最大生成token数

)

# 配置本地化模型(以Llama 3 8B为例)

local_config = LLMConfig(

model_type=ModelType.LOCAL, # 本地模型类型

model_path="./models/llama-3-8b-instruct-q4_0.gguf", # 本地模型路径

n_ctx=2048, # 上下文长度

n_threads=8 # 推理线程数(建议设为CPU核心数)

)

3. 创建 LLM 客户端

通过配置文件初始化客户端,实现模型调用:


from llm_action import LLMClient

from llm_config import openai_config, local_config

# 初始化在线模型客户端(OpenAI)

online_client = LLMClient(config=openai_config)

# 初始化本地化模型客户端(Llama 3)

# local_client = LLMClient(config=local_config) # 本地模型需先下载权重

# 验证客户端是否初始化成功

print("在线模型客户端状态:", "就绪" if online_client.ready() else "未就绪")

运行代码后,若输出 “在线模型客户端状态:就绪”,说明环境搭建完成。本地化模型需先下载权重(参考 llama.cpp 等工具),再指定model_path即可。

核心功能实战:LLM 调用与函数交互

llm-action 的核心功能围绕 “文本生成” 和 “函数调用” 展开,这两大能力覆盖了 LLM 开发的高频场景。通过实战案例,掌握基础调用与进阶交互的实现方式。

1. 基础文本生成:快速实现对话与内容创作

文本生成是 LLM 最基础的功能,llm-action 通过generate方法实现,支持单轮对话、多轮上下文管理。

单轮文本生成(代码解释场景)


# 1. 单轮文本生成:让LLM解释Python冒泡排序代码

def explain_bubble_sort():

# 定义提示词

prompt = """请解释以下Python冒泡排序代码的执行逻辑,用程序员能理解的通俗语言:

def bubble_sort(arr):

n = len(arr)

for i in range(n):

for j in range(0, n-i-1):

if arr[j] > arr[j+1]:

arr[j], arr[j+1] = arr[j+1], arr[j]

return arr

"""

# 调用LLM生成解释

response = online_client.generate(prompt=prompt)

# 输出结果

print("LLM代码解释:")

print("-" * 50)

print(response["content"])

print("-" * 50)

print(f"生成耗时:{response['time_used']:.2f}秒,消耗token:{response['token_used']}")

# 执行函数

explain_bubble_sort()

运行结果会输出清晰的代码解释,包含 “外层循环控制轮次”“内层循环比较交换” 等核心逻辑,同时返回生成耗时和 token 消耗,方便成本控制。

多轮对话(上下文管理)

llm-action 通过add_context方法管理对话历史,无需手动拼接上下文:


# 2. 多轮对话:实现连续交互(如技术问题咨询)

def multi_turn_chat():

# 初始化对话上下文

online_client.clear_context() # 清空历史(可选)

# 第一轮对话:提问

prompt1 = "什么是LLM的量化?为什么需要量化?"

response1 = online_client.generate(prompt=prompt1, add_to_context=True) # 加入上下文

print(f"用户:{prompt1}")

print(f"LLM:{response1['content']}\n")

# 第二轮对话:追问(基于历史上下文)

prompt2 = "4-bit量化和8-bit量化的区别是什么?"

response2 = online_client.generate(prompt=prompt2, add_to_context=True)

print(f"用户:{prompt2}")

print(f"LLM:{response2['content']}")

# 执行多轮对话

multi_turn_chat()

多轮对话中,llm-action 会自动拼接历史对话内容,确保 LLM 理解上下文逻辑,避免 “失忆” 问题。

2. 进阶功能:函数调用与流式输出

函数调用是 LLM 连接外部工具的核心能力(如调用计算器、查询数据库),llm-action 通过bind_function方法简化函数绑定;流式输出则提升用户体验,避免等待完整响应。

函数调用(BMI 计算案例)


# 1. 定义需要LLM调用的函数(BMI计算)

def calculate_bmi(height: float, weight: float) -> dict:

"""

计算BMI(身体质量指数)

:param height: 身高(米)

:param weight: 体重(千克)

:return: BMI值和对应的健康建议

"""

if height <= 0 or weight <= 0:

return {"error": "身高和体重必须为正数"}

bmi = weight / (height ** 2)

if bmi < 18.5:

suggestion = "偏瘦,建议增加营养摄入,适当运动增强体质"

elif 18.5 <= bmi < 24:

suggestion = "正常,继续保持健康的饮食和运动习惯"

elif 24 <= bmi < 28:

suggestion = "超重,建议控制饮食,增加有氧运动"

else:

suggestion = "肥胖,建议咨询医生,制定科学的减重计划"

return {

"bmi": round(bmi, 2),

"suggestion": suggestion,

"height": height,

"weight": weight

}

# 2. 绑定函数到LLM客户端

online_client.bind_function(func=calculate_bmi)

# 3. 让LLM自动调用函数解决问题

def llm_call_function():

prompt = "我身高1.75米,体重70千克,我的BMI是多少?属于什么范围?"

# 开启函数调用模式

response = online_client.generate(

prompt=prompt,

enable_function_call=True # 启用函数调用

)

print("LLM响应结果:")

if response["has_function_call"]:

# LLM调用了函数,获取调用结果

func_result = response["function_result"]

print(f"BMI计算结果:{func_result['bmi']}")

print(f"健康建议:{func_result['suggestion']}")

else:

print(response["content"])

# 执行函数调用

llm_call_function()

llm-action 会自动解析 LLM 的函数调用请求,执行对应函数并返回结果,无需手动处理参数解析和结果拼接,大幅简化开发流程。

流式输出(实时展示生成过程)


# 流式输出:实时打印LLM生成内容(如长文本创作)

def stream_generation():

prompt = "写一篇100字左右的Python开发效率提升技巧,重点讲工具使用"

print("LLM流式生成结果:")

print("-" * 50)

# 开启流式输出

for chunk in online_client.generate_stream(prompt=prompt):

print(chunk["content"], end="", flush=True) # 实时打印每个片段

print("\n" + "-" * 50)

# 执行流式生成

stream_generation()

流式输出适合长文本场景(如文章创作、代码生成),用户无需等待完整响应,提升交互体验。

进阶应用:项目集成与自定义扩展

掌握基础功能后,可将 llm-action 集成到实际项目中,或通过自定义扩展满足个性化需求(如日志记录、权限控制、模型切换策略)。

1. 集成到 Flask Web 服务:打造 LLM 接口

将 llm-action 集成到 Flask 项目,实现可对外提供服务的 LLM 接口:


# app.py:基于Flask的LLM接口服务

from flask import Flask, request, jsonify

from llm_action import LLMClient

from llm_config import openai_config

app = Flask(__name__)

# 初始化LLM客户端(全局单例,避免重复加载)

llm_client = LLMClient(config=openai_config)

# 文本生成接口

@app.route("/api/llm/generate", methods=["POST"])

def llm_generate():

try:

data = request.json

prompt = data.get("prompt")

max_tokens = data.get("max_tokens", 1024)

temperature = data.get("temperature", 0.7)

if not prompt:

return jsonify({"code": 400, "msg": "prompt不能为空"}), 400

# 调用LLM生成

response = llm_client.generate(

prompt=prompt,

max_tokens=max_tokens,

temperature=temperature

)

return jsonify({

"code": 200,

"msg": "success",

"data": {

"content": response["content"],

"token_used": response["token_used"],

"time_used": response["time_used"]

}

})

except Exception as e:

return jsonify({"code": 500, "msg": f"服务异常:{str(e)}"}), 500

# 函数调用接口

@app.route("/api/llm/call-function", methods=["POST"])

def llm_call_function():

try:

data = request.json

prompt = data.get("prompt")

if not prompt:

return jsonify({"code": 400, "msg": "prompt不能为空"}), 400

response = llm_client.generate(

prompt=prompt,

enable_function_call=True

)

return jsonify({

"code": 200,

"msg": "success",

"data": {

"has_function_call": response["has_function_call"],

"content": response.get("content"),

"function_result": response.get("function_result")

}

})

except Exception as e:

return jsonify({"code": 500, "msg": f"服务异常:{str(e)}"}), 500

if __name__ == "__main__":

app.run(host="0.0.0.0", port=5000, debug=True)

启动服务后,通过 POST 请求调用接口:


# 测试文本生成接口

curl -X POST http://localhost:5000/api/llm/generate \

-H "Content-Type: application/json" \

-d '{"prompt": "写一段Python读取Excel文件的代码", "max_tokens": 500}'

接口会返回 LLM 生成的代码及相关统计信息,可直接集成到前端项目或其他服务中。

2. 自定义扩展:添加日志插件

llm-action 支持自定义插件,通过继承LLMPlugin类实现功能扩展,如日志记录、请求拦截、结果过滤。

自定义日志插件


from llm_action import LLMPlugin, LLMRequest, LLMResponse

class LogPlugin(LLMPlugin):

"""自定义日志插件:记录LLM调用的请求和响应信息"""

def before_request(self, request: LLMRequest) -> LLMRequest:

"""请求发送前触发:记录请求信息"""

print(f"[LLM请求日志] 时间:{request.timestamp},模型:{request.config.model_name},prompt长度:{len(request.prompt)}")

return request

def after_response(self, response: LLMResponse) -> LLMResponse:

"""响应返回后触发:记录响应信息"""

status = "成功" if response.success else "失败"

print(f"[LLM响应日志] 时间:{response.timestamp},状态:{status},token消耗:{response.token_used},耗时:{response.time_used:.2f}秒")

return response

# 注册插件到LLM客户端

llm_client.add_plugin(LogPlugin())

# 测试插件效果

llm_client.generate(prompt="测试日志插件是否生效")

运行后会输出请求和响应日志,便于调试和监控 LLM 调用情况。除日志插件外,还可实现 “权限控制插件”(验证 API 调用权限)、“模型切换插件”(根据负载自动切换模型)等,满足复杂项目需求。

总结:从入门到精通的学习路径

llm-action 作为 LLM 入门工具,其核心价值在于 “降低门槛,聚焦业务”—— 开发者无需关注模型底层细节,只需通过简单 API 就能实现复杂功能。结合本文内容,建议按以下路径进阶:

  1. 入门阶段:掌握环境搭建、基础文本生成、多轮对话,完成 “LLM 调用 Hello World”;
  1. 实战阶段:学习函数调用、流式输出,实现 “LLM + 工具” 的场景化应用(如自动计算、数据查询);
  1. 精通阶段:将 llm-action 集成到 Web 服务、自动化脚本,通过自定义插件扩展功能,满足项目个性化需求。

llm-action 的优势在于 “轻量化” 和 “易扩展”,既适合零基础开发者入门,也能满足企业级项目的集成需求。建议收藏本文代码示例,结合实际场景多动手实践 ——LLM 开发的核心不是 “记住 API”,而是 “用工具解决实际问题”,通过 llm-action,你会发现 “大模型入门” 其实很简单。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐