您的位置:首页 > 健康 > 美食 > 中国新闻社四川分社_软件开发的六大步骤_百度精准营销获客平台_淮安百度推广公司

中国新闻社四川分社_软件开发的六大步骤_百度精准营销获客平台_淮安百度推广公司

2024/10/6 8:26:21 来源:https://blog.csdn.net/vlking/article/details/142668772  浏览:    关键词:中国新闻社四川分社_软件开发的六大步骤_百度精准营销获客平台_淮安百度推广公司
中国新闻社四川分社_软件开发的六大步骤_百度精准营销获客平台_淮安百度推广公司

View.py

# 配置OpenAI API
api_key = ""
# 配置OpenAI APIURL
endpoint = ""
# 配置模型名称
deployment_name = "gpt-4o-0312"
# 配置API版本
api_version = "2023-03-15-preview"
# 初始化 tiktoken 编码器,计算详细token值
encoding = tiktoken.encoding_for_model("gpt-4o")# 计算token数量
def count_tokens(text):return len(encoding.encode(text))# 连接Openai并发送请求传递到页面
def dify_Azure(request):b_token = request.COOKIES.get('b_token')if b_token is None:return redirect("B_Login:b_login")else:b_token = request.COOKIES.get('b_token')A = B_user.objects.using('default').filter(b_power="1").filter(b_token=b_token).values_list('b_user',flat=True).first()B = B_usertwo.objects.using('default').filter(b_power="2").filter(b_token=b_token).values_list('b_user',flat=True).first()if A or B:# 发送请求到OpenAI APIheaders = {"Content-Type": "application/json","api-key": api_key}speak = request.GET.get('speak')data = {# 与OpenAI对话"messages": [{"role": "user", "content": speak}],# 限制max_tokens的合理值"max_tokens": 10000}try:url = f"{endpoint}openai/deployments/{deployment_name}/chat/completions?api-version={api_version}"response = requests.post(url, headers=headers, data=json.dumps(data))if response.status_code == 200:response_data = response.json()content = response_data['choices'][0]['message']['content']# 计算token数量user_tokens = count_tokens(data['messages'][0]['content'])response_tokens = count_tokens(content)# 计算总token数量并输出页面total_tokens = user_tokens + response_tokensreturn render(request, 'dify_AzureAI.html', {'response': content, 'speak': speak, 'A': A, 'B': B})else:# 捕获连接、请求失败、账户资金缺少错误信息errorcontent = f"Error: {response.status_code} - {response.text}"return render(request, 'dify_AzureAI.html')# 捕获其他异常错误except requests.exceptions.RequestException as e:errorcontent = f"Request failed: {str(e)}"return render(request, 'dify_AzureAI.html', {'response': errorcontent})else:return redirect("Error_Page:authority_warn")

dify_AzureAI.html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" name="viewport"><meta name="robots" content="noindex, nofollow"><link href="{% static 'plugin/assets/lib/perfect-scrollbar/css/perfect-scrollbar.css' %}" rel="stylesheet"><link href="{% static 'plugin/assets/lib/metismenu/css/metisMenu.min.css' %}" rel="stylesheet"><link href="{% static 'plugin/assets/lib/bootstrap/bootstrap.min.css' %}" rel="stylesheet"><link href="{% static 'plugin/assets/css/main.css' %}" rel="stylesheet"><style>html, body {margin: 0;padding: 0;overflow: hidden;}.chat-container {height: 80vh;overflow-y: auto;border: 1px solid #dee2e6;border-radius: .375rem;background-color: #ffffff;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);padding: 20px;margin-bottom: 20px;}.message {margin-bottom: 1rem;display: flex;align-items: flex-end;}.message.user {flex-direction: row-reverse;}.message-content {padding: 10px 15px;border-radius: .375rem;position: relative;max-width: 75%;word-wrap: break-word;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);}.message.user .message-content {background-color: #39BAF5;color: white;border-top-right-radius: 0;word-wrap: break-word;}.message .message-content {background-color: #f1f1f1;color: #212529;border-top-left-radius: 0;word-wrap: break-word;}.typing-indicator {font-style: italic;color: #6c757d;margin-top: 5px;text-align: right;}.rr {display: flex;justify-content: center;}</style>
</head>
<body>
<div class="page-content"><div class="card"><div class="card-body"><div class="chat-container" id="chat-container">{% if response == None %}{% else %}<div class="message"><img src="{% static 'AI_head.jpg' %}" width="48" height="48" class="rounded-circle"><div class="message-content">&nbsp;{{ response }}&nbsp;</div></div>{% endif %}{% if response == None %}{% else %}<div class="message user"><img src="{% static A.b_head %}" width="48" height="48" class="rounded-circle"><div class="message-content">{{ speak }}&nbsp;</div></div><div id="typing-indicator" class="typing-indicator" style="display:none;">AI正在输入...</div>{% endif %}</div></div><div class="card-footer" style="margin-top: -30px;"><form method="get" id="chat-form" class="form-inline"action="{% url 'Core_dify:dify_Azure' %}">{% csrf_token %}<div class="row rr"><div class="col-auto col-sm-10"><input type="text" class="form-control" name="speak" placeholder="请输入你与AI对话的消息..."></div><div class="col-auto"><button type="submit" class="btn btn-primary form-control"><i class="fas fa-sign-in-alt"></i>发送对话</button></div></div></form></div></div>
</div>
<script src="{% static 'plugin/assets/lib/metismenu/js/metisMenu.min.js' %}"></script>
<script src="{% static 'plugin/assets/lib/perfect-scrollbar/js/perfect-scrollbar.js' %}"></script>
<script src="{% static 'plugin/assets/js/main.js' %}"></script>
<script>$(document).ready(function () {$('#chat-form').on('submit', function (e) {e.preventDefault();const message = $(this).find('input').val();if (message) {$('.chat-container').append(`<div class="message user"><img src="https://via.placeholder.com/40" class="avatar"><div class="message-content">${message}</div></div>`);$(this).find('input').val('');$('.chat-container').scrollTop($('.chat-container')[0].scrollHeight);showTypingIndicator();}});function showTypingIndicator() {$('#typing-indicator').show();setTimeout(() => {$('#typing-indicator').hide();const botMessage = "这是AI的自动回复。";$('.chat-container').append(`<div class="message"><img src="{% static 'AI_head.jpg' %}" width="48" height="48" class="rounded-circle"><div class="message-content">${botMessage}</div></div>`);$('.chat-container').scrollTop($('.chat-container')[0].scrollHeight);}, 2000);}});
</script>
</body>
</html>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com