Github开源项目 Dify chatgpt 人工智能


在 Product Hunt 为我们投票 ↓
产品搜索徽章attachments-2023-06-5X2tqyeJ64800d888af55.png

Dify是一个易于使用的 LLMOps 平台,旨在让更多人能够创建可持续的 AI 原生应用程序。通过针对各种应用程序类型的可视化编排,Dify 提供了开箱即用的应用程序,这些应用程序也可以用作后端即服务 API。使用用于插件和数据集集成的一个 API 统一您的开发流程,并使用用于快速工程、可视化分析和持续改进的单一界面简化您的操作。

使用 Dify 创建的应用程序包括:

开箱即用的网站支持表单模式和聊天对话模式单一 API 包含插件功能、上下文增强等,为您节省后端编码工作可视化数据分析、日志审查和应用程序注释 Dify 与 Langchain 兼容,意味着我们会逐步支持多个LLM,目前支持:

  • GPT 3(文本-davinci-003)
  • GPT 3.5 Turbo(聊天GPT)
  • GPT-4

使用云服务

访问Dify.ai

安装社区版

Github开源地址:https://github.com/langgenius/dify

演示地址:https://cloud.dify.ai/apps

本文安装地址:https://ciilii.com/article/192

系统要求

在安装 Dify 之前,请确保您的机器满足以下最低系统要求:

  • CPU >= 1 核
  • 内存 >= 4GB

快速开始

启动 Dify 服务器最简单的方法是运行我们的docker-compose.yml文件。在运行安装命令之前,请确保您的机器上安装了DockerDocker Compose :

cd docker
docker compose up -d

运行后,您可以在浏览器中访问http://localhost/install 访问Dify 仪表板,并开始初始化安装过程。

配置

如果需要自定义配置,请参考我们docker-compose.yml文件中的注释,手动设置环境配置。进行更改后,请再次运行“docker-compose up -d”。

路线图

开发中的功能:

  • Datasets,支持更多的数据集,例如从Notion或网页同步内容我们将支持更多的数据集,包括文本、网页,甚至Notion内容。用户可以根据自己的数据源构建人工智能应用。
  • Plugins,为应用引入 ChatGPT Plugin 标准插件,或使用 Dify 生产的插件 我们将发布符合 ChatGPT 标准的插件,或 Dify 自己的插件,以在应用中启用更多功能。
  • 开源模型,例如采用 Llama 作为模型提供者或进行进一步微调

问答

问:我可以用 Dify 做什么?

A:Dify 是一个简单但功能强大的 LLM 开发和运营工具。您可以使用它来构建商业级应用程序、个人助理。如果您想开发自己的应用程序,LangDifyGenius 可以节省您与 OpenAI 集成的后端工作,并提供可视化操作能力,让您不断改进和训练您的 GPT 模型。

问:如何使用 Dify 来“训练”我自己的模型?

答:有价值的应用程序包括提示工程、上下文增强和微调。我们创建了一种将提示与编程语言(类似于模板引擎)相结合的混合编程方法,可以轻松完成长文本嵌入或从用户输入的 Youtube 视频中捕获字幕——所有这些都将作为上下文提交要处理的 LLM。我们非常重视应用程序的可操作性,用户在使用应用程序过程中产生的数据可用于分析、标注和持续训练。如果没有合适的工具,这些步骤可能会非常耗时。

Q:如果我想创建自己的应用程序,我需要准备什么?

A:我们假设您已经拥有一个 OpenAI API 密钥;如果没有,请注册一个。如果您已经有了一些可以作为培训背景的内容,那就太好了!

问:有哪些界面语言可用?

A:目前支持英文和中文,您可以贡献语言包给我们。


docker-compose.yml 内容如下:

version: '3.1'

services:

  # API service

  api:

    image: langgenius/dify-api:0.3.1

    restart: always

    environment:

      # Startup mode, 'api' starts the API server.

      MODE: api

      # The log level for the application. Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`

      LOG_LEVEL: INFO

      # A secret key that is used for securely signing the session cookie and encrypting sensitive information on the database. You can generate a strong key using `openssl rand -base64 42`.

      SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U #openai的key#

      # The base URL of console application, refers to the Console base URL of WEB service if console domain is

      # different from api or web app domain.

      # example: http://cloud.dify.ai

      CONSOLE_URL: ''

      # The URL for Service API endpoints,refers to the base URL of the current API service if api domain is

      # different from console domain.

      # example: http://api.dify.ai

      API_URL: ''

      # The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from

      # console or api domain.

      # example: http://udify.app

      APP_URL: ''

      # When enabled, migrations will be executed prior to application startup and the application will start after the migrations have completed.

      MIGRATION_ENABLED: 'true'

      # The configurations of postgres database connection.

      # It is consistent with the configuration in the 'db' service below.

      DB_USERNAME: postgres

      DB_PASSWORD: difyai123456

      DB_HOST: db

      DB_PORT: 5432

      DB_DATABASE: dify

      # The configurations of redis connection.

      # It is consistent with the configuration in the 'redis' service below.

      REDIS_HOST: redis

      REDIS_PORT: 6379

      REDIS_USERNAME: ''

      REDIS_PASSWORD: difyai123456

      REDIS_USE_SSL: 'false'

      # use redis db 0 for redis cache

      REDIS_DB: 0

      # The configurations of session, Supported values are `sqlalchemy`. `redis`

      SESSION_TYPE: redis

      SESSION_REDIS_HOST: redis

      SESSION_REDIS_PORT: 6379

      SESSION_REDIS_USERNAME: ''

      SESSION_REDIS_PASSWORD: difyai123456

      SESSION_REDIS_USE_SSL: 'false'

      # use redis db 2 for session store

      SESSION_REDIS_DB: 2

      # The configurations of celery broker.

      # Use redis as the broker, and redis db 1 for celery broker.

      CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1

      # Specifies the allowed origins for cross-origin requests to the Web API, e.g. https://dify.app or * for all origins.

      WEB_API_CORS_ALLOW_ORIGINS: '*'

      # Specifies the allowed origins for cross-origin requests to the console API, e.g. https://cloud.dify.ai or * for all origins.

      CONSOLE_CORS_ALLOW_ORIGINS: '*'

      # CSRF Cookie settings

      # Controls whether a cookie is sent with cross-site requests,

      # providing some protection against cross-site request forgery attacks

      #

      # Default: `SameSite=Lax, Secure=false, HttpOnly=true`

      # This default configuration supports same-origin requests using either HTTP or HTTPS,

      # but does not support cross-origin requests. It is suitable for local debugging purposes.

      #

      # If you want to enable cross-origin support,

      # you must use the HTTPS protocol and set the configuration to `SameSite=None, Secure=true, HttpOnly=true`.

      #

      # For **production** purposes, please set `SameSite=Lax, Secure=true, HttpOnly=true`.

      COOKIE_HTTPONLY: 'true'

      COOKIE_SAMESITE: 'Lax'

      COOKIE_SECURE: 'false'

      # The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local`

      STORAGE_TYPE: local

      # The path to the local storage directory, the directory relative the root path of API service codes or absolute path. Default: `storage` or `/home/john/storage`.

      # only available when STORAGE_TYPE is `local`.

      STORAGE_LOCAL_PATH: storage

      # The S3 storage configurations, only available when STORAGE_TYPE is `s3`.

      S3_ENDPOINT: 'https://xxx.r2.cloudflarestorage.com'

      S3_BUCKET_NAME: 'difyai'

      S3_ACCESS_KEY: 'ak-difyai'

      S3_SECRET_KEY: 'sk-difyai'

      S3_REGION: 'us-east-1'

      # The type of vector store to use. Supported values are `weaviate`, `qdrant`.

      VECTOR_STORE: weaviate

      # The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.

      WEAVIATE_ENDPOINT: http://weaviate:8080

      # The Weaviate API key.

      WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih

      # The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`.

      QDRANT_URL: 'https://your-qdrant-cluster-url.qdrant.tech/'

      # The Qdrant API key.

      QDRANT_API_KEY: 'ak-difyai'

      # The DSN for Sentry error reporting. If not set, Sentry error reporting will be disabled.

      SENTRY_DSN: ''

      # The sample rate for Sentry events. Default: `1.0`

      SENTRY_TRACES_SAMPLE_RATE: 1.0

      # The sample rate for Sentry profiles. Default: `1.0`

      SENTRY_PROFILES_SAMPLE_RATE: 1.0

    depends_on:

      - db

      - redis

      - weaviate

    volumes:

      # Mount the storage directory to the container, for storing user files.

      - ./volumes/app/storage:/app/api/storage


  # worker service

  # The Celery worker for processing the queue.

  worker:

    image: langgenius/dify-api:0.3.1

    restart: always

    environment:

      # Startup mode, 'worker' starts the Celery worker for processing the queue.

      MODE: worker


      # --- All the configurations below are the same as those in the 'api' service. ---


      # The log level for the application. Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`

      LOG_LEVEL: INFO

      # A secret key that is used for securely signing the session cookie and encrypting sensitive information on the database. You can generate a strong key using `openssl rand -base64 42`.

      # same as the API service

      SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U

      # The configurations of postgres database connection.

      # It is consistent with the configuration in the 'db' service below.

      DB_USERNAME: postgres

      DB_PASSWORD: difyai123456

      DB_HOST: db

      DB_PORT: 5432

      DB_DATABASE: dify

      # The configurations of redis cache connection.

      REDIS_HOST: redis

      REDIS_PORT: 6379

      REDIS_USERNAME: ''

      REDIS_PASSWORD: difyai123456

      REDIS_DB: 0

      REDIS_USE_SSL: 'false'

      # The configurations of celery broker.

      CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1

      # The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local`

      STORAGE_TYPE: local

      STORAGE_LOCAL_PATH: storage

      # The Vector store configurations.

      VECTOR_STORE: weaviate

      WEAVIATE_ENDPOINT: http://weaviate:8080

      WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih

    depends_on:

      - db

      - redis

      - weaviate

    volumes:

      # Mount the storage directory to the container, for storing user files.

      - ./volumes/app/storage:/app/api/storage


  # Frontend web application.

  web:

    image: langgenius/dify-web:0.3.1

    restart: always

    environment:

      EDITION: SELF_HOSTED

      # The base URL of console application, refers to the Console base URL of WEB service if console domain is

      # different from api or web app domain.

      # example: http://cloud.dify.ai

      CONSOLE_URL: ''

      # The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from

      # console or api domain.

      # example: http://udify.app

      APP_URL: ''


  # The postgres database.

  db:

    image: postgres:15-alpine

    restart: always

    environment:

      # The password for the default postgres user.

      POSTGRES_PASSWORD: difyai123456

      # The name of the default postgres database.

      POSTGRES_DB: dify

      # postgres data directory

      PGDATA: /var/lib/postgresql/data/pgdata

    volumes:

      - ./volumes/db/data:/var/lib/postgresql/data

    ports:

      - "5432:5432"


  # The redis cache.

  redis:

    image: redis:6-alpine

    restart: always

    volumes:

      # Mount the redis data directory to the container.

      - ./volumes/redis/data:/data

    # Set the redis password when startup redis server.

    command: redis-server --requirepass difyai123456


  # The Weaviate vector store.

  weaviate:

    image: semitechnologies/weaviate:1.18.4

    restart: always

    volumes:

      # Mount the Weaviate data directory to the container.

      - ./volumes/weaviate:/var/lib/weaviate

    environment:

      # The Weaviate configurations

      # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information.

      QUERY_DEFAULTS_LIMIT: 25

      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'

      PERSISTENCE_DATA_PATH: '/var/lib/weaviate'

      DEFAULT_VECTORIZER_MODULE: 'none'

      CLUSTER_HOSTNAME: 'node1'

      AUTHENTICATION_APIKEY_ENABLED: 'true'

      AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih'

      AUTHENTICATION_APIKEY_USERS: 'hello@dify.ai'

      AUTHORIZATION_ADMINLIST_ENABLED: 'true'

      AUTHORIZATION_ADMINLIST_USERS: 'hello@dify.ai'


  # The nginx reverse proxy.

  # used for reverse proxying the API service and Web service.

  nginx:

    image: nginx:latest

    volumes:

      - ./nginx/nginx.conf:/etc/nginx/nginx.conf

      - ./nginx/proxy.conf:/etc/nginx/proxy.conf

      - ./nginx/conf.d:/etc/nginx/conf.d

    depends_on:

      - api

      - web

    ports:

      - "80:80"

查看yml文件内容如下链接:

https://github.com/langgenius/dify/blob/main/docker/docker-compose.yaml



  • 发表于 2023-06-07 12:56
  • 阅读 ( 514 )
  • 分类:GitHub开源

你可能感兴趣的文章

相关问题

1 条评论

请先 登录 后评论
cici
cici

107 篇文章

作家榜 »

  1. woliven 141 文章
  2. 杰马克丝 37 文章
  3. toya 9 文章
  4. shapx 9 文章
  5. GutAPqdDSlnsoz 0 文章
  6. andlJdeymSAfjWmL 0 文章
  7. vPldqEwtLvnhLYjME 0 文章
  8. Jeff Shanahan 0 文章