AI社交推荐配置:用Python脚本跑通好友推荐接口
AI社交推荐配置不是先搭一套推荐系统,而是先用脚本把“用户特征 + 候选好友 + 提示词”拼成一次模型请求,拿到可解析的推荐列表。
本文按这个思路,用Python写一个能跑通的最小配置,适合已经能调用大模型接口、但还没把推荐逻辑接进社交产品的开发者。
先确认运行环境和接口权限
动手前需要准备三样东西:一台能运行Python 3.8以上版本的服务器或本地电脑、一个可用的大模型API密钥、一份结构化的用户资料样例。
推荐先用本地环境验证,避免在线上服务器直接调试产生额外费用。
安装依赖只需要requests库,用来发HTTP请求。
如果服务器没有安装,执行:
pip install requests
API密钥不要硬编码在脚本里,建议通过环境变量传入:
export LLM_API_KEY="你的密钥"
export LLM_API_URL="你的模型接口地址"
在脚本中用os.environ读取。
这样后续部署到服务器时,只需要在启动脚本或systemd服务中配置环境变量,不用改代码。
构建推荐请求体
推荐请求的核心是三块内容:当前用户的兴趣标签和活跃行为、候选好友的公开资料摘要、要求模型输出的格式。
下面是一个可运行的函数骨架:
import os, json, requests
API_URL = os.environ["LLM_API_URL"]
API_KEY = os.environ["LLM_API_KEY"]
def build_prompt(user, candidates):
user_text = f"用户兴趣:{user['interests']};近期互动:{user['recent_actions']}"
cand_text = "\n".join(
f"- {c['name']}:兴趣{c['interests']},共同群组{c['groups']}"
for c in candidates
)
return f"根据以下用户信息推荐3位好友,输出JSON数组,每项包含name和reason:\n{user_text}\n候选好友:\n{cand_text}"
def call_recommend(prompt):
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
body = {
"model": "你的模型名称",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.3
}
resp = requests.post(API_URL, headers=headers, json=body, timeout=30)
resp.raise_for_status()
return resp.json()["choices"][0]["message"]["content"]
注意两个配置点:温度值建议设在0.2到0.5之间,让推荐理由稳定一些;
候选好友数量不要一次塞太多,超过模型上下文限制会直接报错,一般先控制在10到20个。
解析结果并做格式校验
模型返回的文本不一定严格是JSON,可能带Markdown代码块标记或解释性文字。
解析前先做一次清洗:
def parse_recommend(raw):
text = raw.strip()
if text.startswith("```"):
text = text.strip("`")
text = text.replace("json", "", 1).strip()
try:
data = json.loads(text)
except json.JSONDecodeError:
return {"error": "模型返回非JSON", "raw": raw}
if not isinstance(data, list):
return {"error": "返回结构不是数组", "raw": raw}
return data
如果经常解析失败,可以在提示词末尾加一句“只输出JSON数组,不要输出其他内容”,同时把temperature再调低一点。
校验通过后再把结果写入数据库或返回给前端,不要直接透传模型原文。
常见报错和避坑说明
接口超时:社交推荐请求通常涉及多个候选好友,提示词较长。
把timeout设为30秒以上,并在代码里加一次重试,但不要无限重试,避免费用失控。
上下文超限:报错信息里出现token超限时,优先减少候选好友数量或缩短每个候选的资料字段,而不是直接换更大的模型。
推荐结果重复:模型可能对相似用户给出相同理由。
可以在请求前对候选集去重,并在提示词中要求“每位好友只出现一次”。
密钥泄露风险:不要把API密钥写进前端代码或提交到Git仓库。
社交产品的推荐逻辑应放在服务端,前端只接收推荐结果。
验证推荐是否真的可用
跑通脚本不等于配置完成。
用同一份用户资料连续请求三次,观察返回的推荐列表是否稳定、理由是否和用户兴趣相关。
如果三次结果差异极大,检查temperature是否过高;
如果推荐理由和候选资料对不上,检查提示词中候选好友字段是否拼接正确。
最后在服务端加一条日志,记录每次请求的耗时、候选数量和解析状态。
这样上线后出现异常时,能快速判断是接口问题还是解析问题。
按本文步骤完成AI社交推荐配置后,再根据实际数据调整候选集范围和提示词细节即可。