文心一言api连接django后端
时间: 2025-05-21 20:23:56 浏览: 13
### 集成文心一言 API 到 Django 后端
要在 Django 中集成并调用文心一言 API,可以通过以下方式实现完整的功能支持。这涉及配置环境、创建模型以及编写视图逻辑来处理请求和响应。
#### 1. 安装依赖
为了能够发送 HTTP 请求给文心一言 API,需要安装 `requests` 库或其他类似的 HTTP 客户端工具包。
```bash
pip install requests
```
#### 2. 创建 Django 模型 (可选)
如果计划存储用户的输入数据或者记录交互历史,则可以在 Django 的 ORM 中定义相应的数据库表结构[^2]。例如:
```python
from django.db import models
class BaiDuAIInteraction(models.Model):
user_input = models.TextField()
api_response = models.TextField(null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.user_input[:50]}..."
```
此模型用于保存每次用户向文心一言发起查询的内容及其对应的返回结果。
#### 3. 编写服务层代码
接下来,在 services 或 utils 文件夹下新增一个文件用来封装与百度 AI 接口通信的具体细节。这里假设已经获取到了官方文档里提到的 token 和 endpoint 地址[^3]。
```python
import json
import requests
def call_wenxin_api(prompt_text):
url = "https://wenxin.baidu.com/your-endpoint-url"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
payload = {"prompt": prompt_text}
response = requests.post(url, data=json.dumps(payload), headers=headers)
if response.status_code == 200:
result_data = response.json()
return result_data.get('result', None) or result_data.get('error_msg')
else:
raise Exception(f"Error calling WenXin API: {response.text}")
```
上述函数实现了基于传入提示词 (`prompt`) 调用远程服务器的功能,并捕获可能发生的错误情况。
#### 4. 构建视图逻辑
最后一步是在 views.py 中设置路由映射关系以便前端页面或者其他客户端能访问该功能点。
```python
from django.http import JsonResponse
from .models import BaiDuAIInteraction
from .services import call_wenxin_api
def interact_with_wenxin(request):
if request.method != 'POST':
return JsonResponse({"status":"fail", "message":"Only POST method is allowed."}, status=405)
try:
body_unicode = request.body.decode('utf-8')
body_data = json.loads(body_unicode)
input_query = body_data['query']
ai_answer = call_wenxin_api(input_query)
interaction_record = BaiDuAIInteraction.objects.create(
user_input=input_query,
api_response=str(ai_answer)
)
return JsonResponse({
"status": "success",
"data": {
"answer": ai_answer,
"interaction_id": interaction_record.id
}
})
except KeyError as e:
return JsonResponse({"status":"fail", "message":f"Missing parameter: {e}"}, status=400)
except Exception as ex:
return JsonResponse({"status":"fail", "message":str(ex)}, status=500)
```
这段代码片段展示了如何接收来自客户的 JSON 数据,将其传递至之前构建的服务方法中执行实际的操作,然后再把最终的结果反馈回去[^1]^。
---
阅读全文
相关推荐

















