news 2026/4/29 11:14:54

Phi-3.5-mini-instruct代码实例:Python调用vLLM API+Chainlit前端示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Phi-3.5-mini-instruct代码实例:Python调用vLLM API+Chainlit前端示例

Phi-3.5-mini-instruct代码实例:Python调用vLLM API+Chainlit前端示例

1. 模型简介

Phi-3.5-mini 是一个轻量级的开放模型,属于 Phi-3 模型家族。它基于高质量的数据集构建,包括合成数据和经过筛选的公开网站数据,特别关注推理密集型任务。该模型支持长达128K令牌的上下文长度,并经过严格的训练过程:

  • 监督微调(Supervised Fine-Tuning)
  • 近端策略优化(Proximal Policy Optimization)
  • 直接偏好优化(Direct Preference Optimization)

这些训练方法确保了模型能够精确遵循指令,同时具备强大的安全措施。

2. 环境准备

2.1 验证模型部署

在开始使用前,我们需要确认模型服务已成功部署。可以通过以下命令检查日志:

cat /root/workspace/llm.log

如果看到类似下面的输出,表示模型已成功加载:

[INFO] Model loaded successfully [INFO] vLLM API server started on port 8000

2.2 安装必要依赖

确保已安装以下Python包:

pip install chainlit requests

3. Python调用vLLM API

3.1 基础API调用示例

下面是一个简单的Python脚本,演示如何通过vLLM API调用Phi-3.5-mini-instruct模型:

import requests import json def generate_text(prompt, max_tokens=200): url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} data = { "model": "phi-3.5-mini-instruct", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.7 } response = requests.post(url, headers=headers, data=json.dumps(data)) return response.json() # 示例调用 result = generate_text("请用简单的语言解释量子计算") print(result["choices"][0]["text"])

3.2 流式响应处理

对于长文本生成,可以使用流式响应来提高用户体验:

def generate_text_stream(prompt, max_tokens=200): url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} data = { "model": "phi-3.5-mini-instruct", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0.7, "stream": True } with requests.post(url, headers=headers, data=json.dumps(data), stream=True) as response: for chunk in response.iter_lines(): if chunk: decoded_chunk = chunk.decode('utf-8') if decoded_chunk.startswith('data:'): data = json.loads(decoded_chunk[5:]) yield data["choices"][0]["text"] # 示例调用 for text in generate_text_stream("写一篇关于人工智能的短文"): print(text, end="", flush=True)

4. Chainlit前端集成

4.1 基础Chainlit应用

创建一个简单的Chainlit应用来与模型交互:

import chainlit as cl import requests import json @cl.on_message async def main(message: cl.Message): # 调用vLLM API url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} data = { "model": "phi-3.5-mini-instruct", "prompt": message.content, "max_tokens": 500, "temperature": 0.7 } response = requests.post(url, headers=headers, data=json.dumps(data)) result = response.json() # 发送响应 await cl.Message(content=result["choices"][0]["text"]).send()

4.2 增强版Chainlit应用

添加更多交互功能和更好的用户体验:

import chainlit as cl import requests import json from typing import Optional @cl.on_chat_start async def start_chat(): settings = await cl.ChatSettings( [ cl.input_widget.Slider( id="temperature", label="Temperature", initial=0.7, min=0, max=1, step=0.1 ), cl.input_widget.Slider( id="max_tokens", label="Max Tokens", initial=500, min=100, max=2000, step=100 ) ] ).send() @cl.on_message async def main(message: cl.Message): # 获取用户设置 settings = cl.user_session.get("settings") # 创建消息元素 msg = cl.Message(content="") await msg.send() # 调用vLLM API url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} data = { "model": "phi-3.5-mini-instruct", "prompt": message.content, "max_tokens": settings["max_tokens"] if settings else 500, "temperature": settings["temperature"] if settings else 0.7, "stream": True } full_response = "" with requests.post(url, headers=headers, data=json.dumps(data), stream=True) as response: for chunk in response.iter_lines(): if chunk: decoded_chunk = chunk.decode('utf-8') if decoded_chunk.startswith('data:'): data = json.loads(decoded_chunk[5:]) token = data["choices"][0]["text"] full_response += token await msg.stream_token(token) await msg.update()

5. 实际应用示例

5.1 代码解释器

创建一个能够解释代码的Chainlit应用:

import chainlit as cl import requests import json SYSTEM_PROMPT = """你是一个专业的代码解释器。用户会提供一段代码,你需要: 1. 解释代码的功能 2. 指出可能的改进点 3. 提供优化建议 4. 用简单的语言说明复杂概念""" @cl.on_message async def explain_code(message: cl.Message): prompt = f"{SYSTEM_PROMPT}\n\n请解释以下代码:\n```\n{message.content}\n```" # 调用vLLM API url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} data = { "model": "phi-3.5-mini-instruct", "prompt": prompt, "max_tokens": 800, "temperature": 0.5 } response = requests.post(url, headers=headers, data=json.dumps(data)) result = response.json() # 发送响应 await cl.Message(content=result["choices"][0]["text"]).send()

5.2 文档生成器

创建一个自动生成文档的应用:

import chainlit as cl import requests import json @cl.on_message async def generate_docs(message: cl.Message): prompt = f"""根据以下需求生成详细的技术文档: 需求描述: {message.content} 文档要求: 1. 包含概述、功能说明、使用示例三部分 2. 使用Markdown格式 3. 代码示例要完整可运行 4. 语言简洁专业""" # 调用vLLM API url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} data = { "model": "phi-3.5-mini-instruct", "prompt": prompt, "max_tokens": 1000, "temperature": 0.6 } response = requests.post(url, headers=headers, data=json.dumps(data)) result = response.json() # 发送响应 await cl.Message(content=result["choices"][0]["text"]).send()

6. 总结

本文介绍了如何使用Python调用vLLM API来与Phi-3.5-mini-instruct模型交互,并通过Chainlit构建用户友好的前端界面。主要内容包括:

  1. 模型简介:了解Phi-3.5-mini-instruct的特点和能力
  2. API调用:学习如何通过Python代码与vLLM API交互
  3. 前端集成:使用Chainlit构建交互式聊天界面
  4. 实际应用:实现代码解释器和文档生成器等实用功能

通过这些示例,您可以快速上手Phi-3.5-mini-instruct模型,并将其集成到自己的应用中。模型支持流式响应和多种参数调整,能够满足不同场景的需求。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 11:14:46

煤炉防封指南:3招稳账号

导读煤炉(Mercari)是日本最大的二手交易平台,吸引了很多跨境卖家入驻。但不少人却遇到账号频繁被封、注册失败的难题。到底是选品出了问题,还是运营不合规?还是网络环境不安全?本文从多个角度帮你梳理常见封…

作者头像 李华
网站建设 2026/4/29 11:10:27

s2-pro语音合成快速体验:无需配置,在线试听下载生成结果

s2-pro语音合成快速体验:无需配置,在线试听下载生成结果 1. 语音合成新选择:s2-pro简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它让高质量的文本转语音变得触手可及。不同于复杂的语音合成系统,这个镜像提…

作者头像 李华
网站建设 2026/4/29 11:08:46

终极音乐解锁指南:3步释放你的加密音乐文件

终极音乐解锁指南:3步释放你的加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/4/29 11:08:21

Netflix克隆项目代码审查:10个最佳实践与常见错误

Netflix克隆项目代码审查:10个最佳实践与常见错误 【免费下载链接】netflix Subscribe to my YouTube channel: https://bit.ly/CognitiveSurge - Building Netflix Using React 项目地址: https://gitcode.com/gh_mirrors/ne/netflix Netflix克隆项目是学习…

作者头像 李华