Project Icon

dspy

自优化语言模型程序框架

DSPy是一个语言模型编程框架,通过分离程序流程和参数,实现了提示词和权重的自动优化。该框架引入了新型优化器,能根据特定指标调整参数,有效提升GPT-3.5、GPT-4等模型的性能。DSPy为开发者提供了系统化方法,以更高效地解决复杂AI任务,显著改善了语言模型在各种应用中的可靠性。

DSPy:编程——而非提示——基础模型

[2024年6月] 优化多阶段语言模型程序的指令和示例
[2023年10月] DSPy:将声明式语言模型调用编译为自我改进的流水线
[2024年7月] 微调和提示优化:两个更好地协同工作的重要步骤
[2024年6月] 提示作为自动优化的训练超参数
[2024年1月] 极端多标签分类的上下文学习
[2023年12月] DSPy断言:自我完善语言模型流水线的计算约束
[2022年12月] 演示-搜索-预测:为知识密集型自然语言处理任务组合检索和语言模型

入门:  

文档: DSPy文档

下载量 月下载量


DSPy是一个用于算法优化语言模型提示和权重的框架,特别适用于在流水线中多次使用语言模型的情况。如果不使用DSPy而直接使用语言模型构建复杂系统,通常需要:(1)将问题分解为步骤,(2)精心设计提示,使每个步骤单独运行良好,(3)调整步骤使其协同工作,(4)生成合成示例来调整每个步骤,以及(5)使用这些示例微调较小的语言模型以降低成本。目前,这个过程既困难又混乱:每次更改流水线、语言模型或数据时,所有提示(或微调步骤)可能都需要更改。

为了使这个过程更系统化和更强大,DSPy做了两件事。首先,它将程序的流程(模块)与每个步骤的参数(语言模型提示和权重)分离。其次,DSPy引入了新的优化器,这些优化器是由语言模型驱动的算法,可以根据您想要最大化的指标来调整语言模型调用的提示和/或权重。

DSPy可以常规地教导强大的模型(如GPT-3.5GPT-4)和本地模型(如T5-baseLlama2-13b)在任务中变得更加可靠,即提高质量和/或避免特定的失败模式。DSPy优化器将把相同的程序"编译"成不同的指令、少样本提示和/或权重更新(微调),以适应每个语言模型。这是一种新范式,在这种范式中,语言模型及其提示退居幕后,成为可以从数据中学习的更大系统中可优化的部分。**总之,**更少的提示工作,更高的分数,以及一种更系统化的方法来使用语言模型解决困难任务。

目录

如果您需要帮助思考您的任务,我们最近为社区创建了一个Discord服务器

  1. 安装
  2. 教程和文档
  3. 框架语法
  4. 编译:两个强大的概念
  5. Pydantic类型
  6. 常见问题:DSPy适合我吗?

与神经网络的类比

当我们构建神经网络时,我们不会手动编写遍历手动调整的浮点数列表的循环。相反,您可能会使用像PyTorch这样的框架来组合声明式层(例如,ConvolutionDropout),然后使用优化器(例如SGD或Adam)来学习网络的参数。

同理!DSPy为您提供了正确的通用模块(例如,ChainOfThoughtReAct等),这些模块取代了基于字符串的提示技巧。为了替代提示黑客和一次性合成数据生成器,DSPy还为您提供了通用优化器(BootstrapFewShotWithRandomSearchBayesianSignatureOptimizer),这些是更新程序参数的算法。每当您修改代码、数据、断言或指标时,您都可以再次"编译"您的程序,DSPy将创建符合您更改的新的有效提示。

简短问答

DSPy优化器调整什么? 每个优化器都不同,但它们都试图通过更新提示或语言模型权重来最大化您程序的指标。当前的DSPy优化器可以检查您的数据,模拟程序的轨迹以生成每个步骤的好/坏示例,根据过去的结果提出或改进每个步骤的指令,在自生成的示例上微调您的语言模型的权重,或结合几种方法来提高质量或降低成本。我们非常欢迎合并新的优化器,探索更丰富的空间:您目前手动进行的大多数提示工程、"合成数据"生成或自我改进步骤可能都可以概括为作用于任意语言模型程序的DSPy优化器。

我应该如何将DSPy用于我的任务? 使用DSPy是一个迭代过程。首先定义您的任务和想要最大化的指标,并准备一些示例输入——通常不需要标签(或者如果您的指标需要,只需要最终输出的标签)。然后,通过选择内置层(模块)来构建您的流水线,为每个层指定一个签名(输入/输出规范),然后在Python代码中自由调用您的模块。最后,使用DSPy优化器将您的代码编译成高质量的指令、自动生成的少样本示例,或更新的语言模型权重。

如果我有更好的提示或合成数据生成想法怎么办? 太好了。我们鼓励您考虑是否最好将其表达为一个模块或优化器,我们很乐意将其合并到DSPy中,让每个人都能使用。DSPy不是一个完整的项目;它是一个持续努力,旨在创建结构(模块和优化器)来取代黑客式的提示和流水线工程技巧。

DSPy代表什么? 这是一个长故事,但现在的反向缩写是Declarative Self-improving Language Programs, pythonically(声明式自我改进语言程序,Python风格)。

1) 安装

您只需要:

pip install dspy-ai

要安装main分支的最新版本:

pip install git+https://github.com/stanfordnlp/dspy.git

或者在Google Colab中打开我们的介绍笔记本:

默认情况下,DSPy从pip安装最新的openai。但是,如果您在OpenAI更改其API之前安装了旧版本openai~=0.28.1,该库也能正常使用。两者都受支持。

对于可选的(按字母顺序排列)ChromadbGroqMarqoMilvusMongoDBMyScaleDB、Pinecone、QdrantSnowflakeWeaviate检索集成,请包含以下额外内容:

pip install dspy-ai[chromadb] # 或 [groq] 或 [marqo] 或 [milvus] 或 [mongodb] 或 [myscale] 或 [pinecone] 或 [qdrant] 或 [snowflake] 或 [weaviate]

2) 文档

DSPy文档分为教程(逐步说明如何使用DSPy解决任务)、指南(如何使用API的特定部分)和示例(展示用法的独立程序)。

A) 教程

级别教程在Colab中运行描述
初级入门介绍DSPy的基本构建模块。通过HotPotQA任务处理复杂问答。
初级最小工作示例不适用使用DSPy构建并优化一个非常简单的思维链程序,用于数学问答。非常简短。
初级编译棘手任务不适用教导语言模型推理逻辑陈述和否定。使用GPT-4为GPT-3.5引导少样本思维链演示。在ScoNe上建立了最先进的结果。由Chris Potts贡献。
初级本地模型和自定义数据集同时说明两个不同的内容:如何使用本地模型(特别是Llama-2-13B)以及如何使用自己的数据示例进行训练和开发。
中级DSPy论文不适用DSPy论文的第3、5、6和7节可以作为教程使用。包括解释的代码片段、结果以及对抽象和API的讨论。
中级DSPy断言介绍在生成带引用的长篇问题回答时应用DSPy断言的示例。在零样本和编译设置下呈现比较评估。
中级复杂程序的微调教导本地T5模型(770M)在HotPotQA上表现出色。仅使用200个标记答案。不使用手写提示、不调用OpenAI,也不使用检索或推理的标签。
高级信息提取解决从长文章(生物医学研究论文)中提取信息的问题。结合上下文学习和检索,在BioDEX上取得最先进的结果。由Karel D'Oosterlinck贡献。

其他人们认为有用的资源

B) 指南

如果您是DSPy新手,最好按顺序阅读。之后,您可能会经常参考这些指南,例如复制/粘贴可以编辑用于自己DSPy程序的代码片段。

  1. 语言模型

  2. 签名

  3. 模块

  4. 数据

  5. 指标

  6. 优化器(原称Teleprompters)

  7. DSPy断言

C) 示例

DSPy团队认为复杂性必须有理由。我们认真对待这一点:除非我们能够通过实证证明这种复杂性通常会带来质量或成本的改善,否则我们绝不会发布复杂的教程(上面)或示例(下面)。其他框架或文档很少执行这种规则,但在DSPy示例中您可以依赖它。

examples/目录和顶级目录中有许多示例。我们欢迎贡献!

您可以在Twitter/X上找到@lateinteraction发布的其他示例。

一些其他示例(不全面,欢迎通过PR添加更多):

待添加:多伦多大学在临床自然语言处理方面的最新研究成果链接,Plastic Labs 的心智理论 (ToM) 研究,以及 Replit 的 DSPy 流水线。

Connor Shorten 在 Weaviate 的 DSPy 食谱中也有一些最新的精彩示例。YouTube 上的教程

D) 可视化

为了可视化优化过程中的进展,LangWatch 提供了 DSPy 可视化工具,通过检查正在优化的提示、签名和演示,以及正在评估的示例、语言模型调用和成本,帮助理解和调试优化器:

DSPy 可视化工具

3) 语法:你掌控工作流程 —— 这是自由形式的 Python 代码!

DSPy 隐藏了繁琐的提示工程,但它清晰地展示了你需要做出的重要决策:[1] 你的系统设计会是什么样的?[2] 你的程序行为有哪些重要约束?

你可以用自由形式的 Python 模块来表达你的系统。DSPy 将调优你的程序质量,无论你以何种方式使用基础模型:你可以使用循环、if 语句或异常进行编码,并在任何你认为适合你的任务的 Python 控制流中使用 DSPy 模块。

假设你想构建一个简单的检索增强生成(RAG)系统用于问答。你可以像这样定义自己的 RAG 程序:

class RAG(dspy.Module):
    def __init__(self, num_passages=3):
        super().__init__()
        self.retrieve = dspy.Retrieve(k=num_passages)
        self.generate_answer = dspy.ChainOfThought("context, question -> answer")
    
    def forward(self, question):
        context = self.retrieve(question).passages
        answer = self.generate_answer(context=context, question=question)
        return answer

一个程序有两个关键方法,你可以根据需要进行编辑。

你的 __init__ 方法声明了你将使用的模块。在这里,RAG 将使用内置的 Retrieve 进行检索,使用 ChainOfThought 生成答案。DSPy 提供了通用模块,可以适应你自己的子任务形式 —— 而不是为特定应用预构建的函数。

使用语言模型的模块,如 ChainOfThought,需要一个签名。这是一个声明性规范,告诉模块它预期要做什么。在这个例子中,我们使用简写签名表示法 context, question -> answer 来告诉 ChainOfThought 它将获得一些 context 和一个 question,并且必须生成一个 answer。我们将在下面讨论更高级的**签名**。

你的 forward 方法表达了你想用模块进行的任何计算。在这种情况下,我们使用模块 self.retrieve 搜索一些 context,然后使用模块 self.generate_answer,它使用 contextquestion 生成 answer

现在你可以在零样本模式下使用这个 RAG 程序。或者编译它以获得更高质量。零样本使用很简单。只需定义程序的一个实例,然后调用它:

rag = RAG()  # 零样本,未编译版本的 RAG
rag("法国的首都是什么?").answer  # -> "巴黎"

下一节将讨论如何编译我们简单的 RAG 程序。当我们编译它时,DSPy 编译器将注释其步骤的演示:(1) 检索,(2) 使用上下文,(3) 使用思维链回答问题。从这些演示中,DSPy 编译器将确保它生成一个有效的少样本提示,可以很好地与你的语言模型、检索模型和数据配合使用。如果你使用的是小型模型,它会微调你的模型(而不是提示)来完成这个任务。

如果你后来决定在管道中需要另一个步骤,只需添加另一个模块并再次编译。也许添加一个模块,在搜索过程中考虑聊天历史?

4) 两个强大的概念:签名和电子提词器

注意: 我们将很快把电子提词器重命名为优化器。这不会影响它们的功能,但会简化使用的术语。

为了使编译你编写的任何程序成为可能,DSPy 引入了两个简单的概念:签名和电子提词器。

4.a) 使用 dspy.Signature 声明语言模型的输入/输出行为

当我们在 DSPy 中为语言模型分配任务时,我们将所需的行为指定为签名。签名是 DSPy 模块输入/输出行为的声明性规范。

与其投入精力去研究如何让你的语言模型完成子任务,不如使用签名来告诉 DSPy 子任务是什么。之后,DSPy 编译器将弄清楚如何为你的大型语言模型构建一个复杂的提示(或微调你的小型语言模型),专门针对你的签名、你的数据和你的管道。

签名由三个简单的元素组成:

  • 语言模型应该解决的子任务的最小描述。
  • 一个或多个输入字段的描述(例如,输入问题),我们将提供给语言模型。
  • 一个或多个输出字段的描述(例如,问题的答案),我们将从语言模型中期望得到。

我们支持两种表示签名的方式。简写签名表示法用于快速开发。你只需为你的模块(例如,dspy.ChainOfThought)提供一个字符串,格式为 input_field_name_1, ... -> output_field_name_1, ...,字段之间用逗号分隔。

在前面的 RAG 类中,我们看到:

self.generate_answer = dspy.ChainOfThought("context, question -> answer")

在许多情况下,这种简单的签名就足够了。然而,有时你需要更多控制。在这些情况下,我们可以使用完整的表示法来表达更全面的签名,如下所示。

class GenerateSearchQuery(dspy.Signature):
    """编写一个简单的搜索查询,以帮助回答复杂问题。"""

    context = dspy.InputField(desc="可能包含相关事实")
    question = dspy.InputField()
    query = dspy.OutputField()

### 在程序的__init__函数中
self.generate_answer = dspy.ChainOfThought(GenerateSearchQuery)

你可以选择为每个输入或输出字段提供prefix和/或desc键,以细化或约束使用你的签名的模块的行为。子任务本身的描述在文档字符串中指定(即"""编写一个简单的...""")。

4.b) 使用dspy.teleprompt.*DSPy自动优化你的程序

定义RAG程序后,我们可以对其进行编译。编译程序将更新存储在每个模块中的参数。对于大型语言模型,这主要体现在创建和验证良好的示例以包含在你的提示中。

编译依赖于三个方面:(可能很小的)训练集、验证指标以及你从DSPy中选择的teleprompt。Teleprompters是强大的优化器(包含在DSPy中),可以学习引导和选择有效的提示,用于任何程序的模块。(名称中的"tele-"意味着"远程",即远程自动提示。)

DSPy通常只需要很少的标注。例如,我们的RAG管道可能只需要几个包含问题及其(人工标注的)答案的示例就能很好地工作。你的管道可能涉及多个复杂步骤:我们的基本RAG示例包括检索上下文、思维链和答案。然而,你只需要为初始问题和最终答案提供标签。DSPy将引导任何支持你管道所需的中间标签。如果你以任何方式更改管道,引导的数据也会相应改变!

my_rag_trainset = [
  dspy.Example(
    question="Gary Zukav的第一本书获得了哪个奖项?",
    answer="国家图书奖"
  ),
  ...
]

其次,定义你的验证逻辑,这将表达你的程序或单个模块行为的一些约束。对于RAG,我们可能会表达一个简单的检查,如下所示:

def validate_context_and_answer(example, pred, trace=None):
    # 检查金标准和预测答案是否相同
    answer_match = example.answer.lower() == pred.answer.lower()

    # 检查预测答案是否来自检索的上下文之一
    context_match = any((pred.answer.lower() in c) for c in pred.context)

    return answer_match and context_match

不同的teleprompters在优化成本与质量等方面提供各种权衡。对于RAG,我们可能会使用一个简单的teleprompt,称为BootstrapFewShot。为此,我们使用验证函数my_rag_validation_logic实例化teleprompt本身,然后针对一些训练集my_rag_trainset进行编译。

from dspy.teleprompt import BootstrapFewShot

teleprompter = BootstrapFewShot(metric=my_rag_validation_logic)
compiled_rag = teleprompter.compile(RAG(), trainset=my_rag_trainset)

如果我们现在使用compiled_rag,它将调用我们的语言模型,使用包含少量示例的丰富提示,展示在我们数据上进行基于思维链的检索增强问答。

5) Pydantic类型

有时你需要的不仅仅是字符串输入/输出。 例如,假设你需要找到

from pydantic import BaseModel, Field
from dspy.functional import TypedPredictor

class TravelInformation(BaseModel):
    origin: str = Field(pattern=r"^[A-Z]{3}$")
    destination: str = Field(pattern=r"^[A-Z]{3}$")
    date: datetime.date
    confidence: float = Field(gt=0, lt=1)

class TravelSignature(Signature):
    """ 从给定的电子邮件中提取所有旅行信息 """
    email: str = InputField()
    flight_information: list[TravelInformation] = OutputField()

predictor = TypedPredictor(TravelSignature)
predictor(email='...')

这将输出一个TravelInformation对象列表。

还有其他方法可以创建类型化签名。比如

predictor = TypedChainOfThought("question:str -> answer:int")

这应用了思维链,并保证返回一个整数。

甚至还有一种受tanuki.py启发的方法,在定义模块时可能会很方便:

from dspy.functional import FunctionalModule, predictor, cot

class MyModule(FunctionalModule):
    @predictor
    def hard_question(possible_topics: list[str]) -> str:
        """根据其中一个主题编写一个难题。它应该可以用数字回答。"""

    @cot
    def answer(question: str) -> float:
        pass

    def forward(possible_topics: list[str]):
        q = hard_question(possible_topics=possible_topics)
        a = answer(question=q)
        return (q, a)

更多示例,请参见上面的列表, 以及该模块的单元测试

6) 常见问题:DSPy适合我吗?

DSPy的理念和抽象与其他库和框架有显著不同,所以通常很容易决定DSPy是否适合你的用例。

如果你是NLP/AI研究人员(或正在探索新管道或新任务的从业者),答案通常是毫无疑问的。如果你是从事其他工作的从业者,请继续阅读。

[5.a] DSPy与简单的提示包装器(OpenAI API、MiniChain、基本模板)的比较

换句话说:_为什么我不能直接将提示写成字符串模板?_好吧,对于极其简单的设置,这_可能_就足够了。(如果你熟悉神经网络,这就像用Python的for循环表达一个小型两层神经网络。它勉强可以工作。)

然而,当你需要更高的质量(或可控的成本)时,你就需要迭代探索多阶段分解、改进提示、数据引导、仔细微调、检索增强和/或使用更小(或更便宜、本地)的模型。使用基础模型构建的真正表达能力在于这些部分之间的交互。但每次你改变一个部分,你可能会破坏(或削弱)多个其他组件。

DSPy清晰地抽象出这些交互中外部于你实际系统设计的部分(_并且_强大地优化它们)。它让你专注于设计模块级的交互:用10或20行DSPy表达的_相同程序_可以轻松编译成GPT-4的多阶段指令、Llama2-13b的详细提示或T5-base的微调。

哦,你也不再需要在项目核心维护冗长、脆弱、特定于模型的字符串了。

[5.b] DSPy与应用开发库如LangChain、LlamaIndex的比较

注意:如果你使用LangChain作为自己提示字符串的简单包装器,请参考回答[5.a]。

LangChain和LlamaIndex是针对使用语言模型进行高级应用开发的流行库。它们提供了许多_开箱即用_的、预建的应用模块,可以与你的数据或配置插接。实际上,确实许多用例真的_不需要_任何特殊组件。如果你对使用某人的通用、现成的提示来处理PDF问答或标准文本到SQL感到满意,只要它易于在你的数据上设置,那么你可能会在这些库中找到非常丰富的生态系统。

与这些库不同,DSPy内部不包含针对特定应用你可以构建的手工制作的提示。相反,DSPy引入了一组非常小但更强大和通用的模块,这些模块可以学习在你的管道中针对你的数据提示(或微调)你的语言模型

DSPy提供了完全不同程度的模块化:当你改变数据、调整程序的控制流程或更改目标语言模型时,DSPy编译器可以将你的程序映射到一组新的提示(或微调),这些提示是专门针对这个管道优化的。正因为如此,你可能会发现DSPy以最少的努力为你的任务获得最高的质量,前提是你愿意实现(或扩展)你自己的简短程序。简而言之,DSPy适用于当你需要一个轻量级但自动优化的编程模型时 — 而不是一个预定义提示和集成的库。 如果你熟悉神经网络:

这就像PyTorch(代表DSPy)和HuggingFace Transformers(代表更高级别的库)之间的区别。如果你只想使用现成的BERT-base-uncasedGPT2-large,或对它们进行最小程度的微调,HF Transformers使这变得非常简单。然而,如果你想构建自己的架构(或大幅扩展现有架构),你就必须迅速转向像PyTorch这样更加模块化的工具。幸运的是,HF Transformers确实是用PyTorch这样的后端实现的。我们同样对DSPy的常见应用的高级封装感到兴奋。如果这是使用DSPy实现的,你的高级应用也可以以静态提示链无法实现的方式显著适应你的数据。如果你想在这方面提供帮助,请提出一个issue

[5.c] DSPy与Guidance、LMQL、RELM、Outlines等生成控制库的比较

Guidance、LMQL、RELM和Outlines都是令人兴奋的新库,用于控制LM的单次完成,例如,如果你想强制执行JSON输出模式或将采样限制在特定的正则表达式内。

这在许多场景中非常有用,但通常专注于单个LM调用的低级结构化控制。它并不能确保你获得的JSON(或结构化输出)对你的任务来说是正确或有用的。

相比之下,DSPy自动优化你程序中的提示,使其与各种任务需求保持一致,这也可能包括生成有效的结构化输出。话虽如此,我们正在考虑允许DSPy中的Signatures表达类似正则表达式的约束,这些约束由这些库实现。

测试

要运行测试,你首先需要克隆仓库。

然后通过poetry安装包: 注意 - 你可能需要

poetry install --with test

然后运行所有测试,或特定的测试套件,使用以下命令:

poetry run pytest
poetry run pytest tests/PATH_TO_TEST_SUITE

贡献快速入门

参见CONTRIBUTING.md获取DSPy贡献的快速入门指南。

团队、贡献者和致谢

项目负责人:Omar Khattab

项目导师:Chris PottsMatei ZahariaHeather Miller

核心库:Arnav SinghviHerumb ShandilyaSri VardhamananCyrus NourooziAmir MehrKyle Caverly,特别感谢Keshav SanthanamThomas AhleConnor Shorten

提示优化:Krista Opsahl-OngMichael RyanJosh Purtell,特别感谢Karel D'OosterlinckEric Zhang

微调和强化学习:Dilara SoyluIsaac MillerSouradip Chakraborty

PL抽象:Shangyin TanManish ShettyPeter Zhong

应用:Jasper XianSaron SamuelAlberto MancarellaFaraz KhoubsiratSaiful HaqAshutosh Sharma

特别感谢Rick BattleDhar RawalInsop SongTom DorrIgor KotenkovCorey ZumarLisa LiDavid HallAshwin ParanjapeChris ManningAvi Sil

DSPy标志由Chuyi Zhang设计。

📜 引用和进一步阅读

要及时了解或了解更多信息,请在Twitter上关注@lateinteraction

如果你在研究论文中使用DSPy或DSP,请按以下方式引用我们的工作:

@article{khattab2023dspy,
  title={DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines},
  author={Khattab, Omar and Singhvi, Arnav and Maheshwari, Paridhi and Zhang, Zhiyuan and Santhanam, Keshav and Vardhamanan, Sri and Haq, Saiful and Sharma, Ashutosh and Joshi, Thomas T. and Moazam, Hanna and Miller, Heather and Zaharia, Matei and Potts, Christopher},
  journal={arXiv preprint arXiv:2310.03714},
  year={2023}
}
@article{khattab2022demonstrate,
  title={Demonstrate-Search-Predict: Composing Retrieval and Language Models for Knowledge-Intensive {NLP}},
  author={Khattab, Omar and Santhanam, Keshav and Li, Xiang Lisa and Hall, David and Liang, Percy and Potts, Christopher and Zaharia, Matei},
  journal={arXiv preprint arXiv:2212.14024},
  year={2022}
}

你还可以阅读更多关于框架从Demonstrate-Search-Predict到DSPy的演变:

注意:如果你在寻找Demonstrate-Search-Predict(DSP),即DSPy的前一个版本,你可以在这个仓库的v1分支上找到它。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号