以API形式调用Dify项目应用(附代码)

大模型相关目录

大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。

  1. 大模型应用向开发路径:AI代理工作流
  2. 大模型应用开发实用开源项目汇总
  3. 大模型问答项目问答性能评估方法
  4. 大模型数据侧总结
  5. 大模型token等基本概念及参数和内存的关系
  6. 大模型应用开发-华为大模型生态规划
  7. 从零开始的LLaMA-Factory的指令增量微调
  8. 基于实体抽取-SMC-语义向量的大模型能力评估通用算法(附代码)
  9. 基于Langchain-chatchat的向量库构建及检索(附代码)
  10. 一文教你成为合格的Prompt工程师
  11. 最简明的大模型agent教程
  12. 批量使用API调用langchain-chatchat知识库能力
  13. langchin-chatchat部分开发笔记(持续更新)
  14. 文心一言、讯飞星火、GPT、通义千问等线上API调用示例
  15. 大模型RAG性能提升路径
  16. langchain的基本使用
  17. 结合基础模型的大模型多源信息应用开发
  18. COT:大模型的强化利器
  19. 多角色大模型问答性能提升策略(附代码)
  20. 大模型接入外部在线信息提升应用性能
  21. 从零开始的Dify大模型应用开发指南
  22. 基于dify开发的多模态大模型应用(附代码)
  23. 基于零一万物多模态大模型通过外接数据方案优化图像文字抽取系统
  24. 快速接入stable diffusion的文生图能力
  25. 多模态大模型通过外接数据方案实现电力智能巡检(设计方案)
  26. 大模型prompt实例:知识库信息质量校验模块
  27. 基于Dify的LLM-RAG多轮对话需求解决方案(附代码)
  28. Dify大模型开发技巧:约束大模型回答范围
  29. 以API形式调用Dify项目应用(附代码)


需求介绍

Dify主要提供用户UI使用界面,但对与部分场景和API形式调用项目应用十分必要。
实际上,Dify也提供了相应的服务。

具体实现

在这里插入图片描述

在这里插入图片描述
如上图所示,base_urlhe与相应密钥容易获得。

代码如下:

import requests
import json

# API URL
api_url = "http://172.20.32.127:5001/v1/chat-messages"

# API Key
api_key = "app-Nli22sBKsN0gDdXcBP9aVpnE"

# Request headers
headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json',
}

# Request payload
data = {
    "inputs": { "url": "https://picture.gptkong.com/20240626/16577e63255c294a5c941336c6703553b9.png" },
    "query": "识别图片",
    "response_mode": "blocking",
    "conversation_id": "",
    "user": "abc-123"
}

# Send the POST request
response = requests.post(api_url, headers=headers, data=json.dumps(data))

# Check the response
if response.status_code == 200:
    print("Request successful")
    print("Response:", response.json())
else:
    print(f"Request failed with status code: {response.status_code}")
    print("Error:", response.text)
### 修改 Dify API 以适应 OpenAI 接口标准 为了使 Dify API 能够与 OpenAI 的接口标准兼容,主要工作集中在调整请求路径、参数名称以及响应格式上。以下是具体实现方法: #### 请求路径适配 OpenAI 提供了一系列标准化的API端点用于不同类型的交互操作。对于大多数情况而言,这些端点遵循特定模式,例如 `/v1/completions` 或者 `/v1/chat/completions`。 针对这一点,在调用 Dify API 时可以创建代理层来映射来自客户端发出的标准 OpenAI 风格 URL 到实际对应的内部服务地址[^1]。 ```python from fastapi import FastAPI, Request import requests app = FastAPI() @app.post("/v1/{path:path}") async def proxy_openai(request: Request, path: str): body = await request.json() # 将接收到的数据转发给真实的Dify服务器 response = requests.post( f"http://localhost:8000/api/{path}", json=body) return response.json() ``` 此代码片段展示了如何设置一个简单的FastAPI应用程序作为中间件,它接收符合OpenAI风格URL结构的HTTP POST请求并将它们重定向到运行中的Dify实例。 #### 参数名转换 由于两个平台之间可能存在差异化的命名约定,因此还需要考虑对传入参数进行必要的转换处理。这通常涉及到字段重命名或结构调整等工作。可以通过编写自定义函数来进行此类变换逻辑的设计和实施[^2]。 ```python def transform_params(params): transformed = {} mapping = { 'prompt': 'input_text', 'max_tokens': 'response_length' # 添加其他需要转换的键值对... } for key, value in params.items(): if key in mapping: new_key = mapping[key] transformed[new_key] = value else: transformed[key] = value return transformed ``` 上述Python函数接受原始输入字典并返回一个新的经过转换后的版本,其中包含了适合传递给目标系统的参数集。 #### 响应数据格式化 最后一步是对从Dify获取的结果进行适当加工,使其外观更接近于预期由OpenAI产生的输出形式。这可能涉及到了解两者间存在的任何细微差别,并据此作出相应调整。 ```json { "id": "cmpl-uqkvlQyHxEWb6swHLk4XeDRK", "object": "text_completion", "created": 1589478378, "model": "text-davinci-003", "choices": [ { "text": "...", "index": 0, "logprobs": null, "finish_reason": "length" } ], "usage": {"prompt_tokens": 5, "completion_tokens": 7, "total_tokens": 12} } ``` 理想情况下,应该确保最终呈现出来的JSON对象尽可能贴近官方文档所描述的样子,从而减少下游消费者理解上的障碍。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的中青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值