Compare commits

..

2 Commits

Author SHA1 Message Date
Adam Gough
1e13f6ee75 duplicated subflow 2025-09-15 00:18:11 -07:00
Adam Gough
2950353952 added suplication 2025-09-13 15:32:26 -07:00
1099 changed files with 10606 additions and 81829 deletions

View File

@@ -32,7 +32,6 @@ jobs:
env:
NODE_OPTIONS: '--no-warnings'
NEXT_PUBLIC_APP_URL: 'https://www.sim.ai'
DATABASE_URL: 'postgresql://postgres:postgres@localhost:5432/simstudio'
ENCRYPTION_KEY: '7cf672e460e430c1fba707575c2b0e2ad5a99dddf9b7b7e3b5646e630861db1c' # dummy key for CI only
run: bun run test
@@ -40,7 +39,6 @@ jobs:
env:
NODE_OPTIONS: '--no-warnings'
NEXT_PUBLIC_APP_URL: 'https://www.sim.ai'
DATABASE_URL: 'postgresql://postgres:postgres@localhost:5432/simstudio'
STRIPE_SECRET_KEY: 'dummy_key_for_ci_only'
STRIPE_WEBHOOK_SECRET: 'dummy_secret_for_ci_only'
RESEND_API_KEY: 'dummy_key_for_ci_only'
@@ -73,7 +71,7 @@ jobs:
run: bun install
- name: Apply migrations
working-directory: ./packages/db
working-directory: ./apps/sim
env:
DATABASE_URL: ${{ github.ref == 'refs/heads/main' && secrets.DATABASE_URL || secrets.STAGING_DATABASE_URL }}
run: bunx drizzle-kit migrate --config=./drizzle.config.ts
run: bunx drizzle-kit migrate

View File

@@ -1,151 +0,0 @@
name: 'Auto-translate Documentation'
on:
push:
branches: [ staging ]
paths:
- 'apps/docs/content/docs/en/**'
- 'apps/docs/i18n.json'
workflow_dispatch: # Allow manual triggers
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
if: github.actor != 'github-actions[bot]' # Prevent infinite loops
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Run Lingo.dev translations
env:
LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
run: |
cd apps/docs
bunx lingo.dev@latest i18n
- name: Check for translation changes
id: changes
run: |
cd apps/docs
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
if [ -n "$(git status --porcelain content/docs)" ]; then
echo "changes=true" >> $GITHUB_OUTPUT
else
echo "changes=false" >> $GITHUB_OUTPUT
fi
- name: Create Pull Request with translations
if: steps.changes.outputs.changes == 'true'
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "feat(i18n): update translations"
title: "🌐 Auto-update translations"
body: |
## Summary
Automated translation updates triggered by changes to documentation.
This PR was automatically created after content changes were made, updating translations for all supported languages using Lingo.dev AI translation engine.
**Original trigger**: ${{ github.event.head_commit.message }}
**Commit**: ${{ github.sha }}
**Workflow**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [x] Documentation
- [ ] Other: ___________
## Testing
This PR includes automated translations for modified English documentation content:
- 🇪🇸 Spanish (es) translations
- 🇫🇷 French (fr) translations
- 🇨🇳 Chinese (zh) translations
**What reviewers should focus on:**
- Verify translated content accuracy and context
- Check that all links and references work correctly in translated versions
- Ensure formatting, code blocks, and structure are preserved
- Validate that technical terms are appropriately translated
## Checklist
- [x] Code follows project style guidelines (automated translation)
- [x] Self-reviewed my changes (automated process)
- [ ] Tests added/updated and passing
- [x] No new warnings introduced
- [x] I confirm that I have read and agree to the terms outlined in the [Contributor License Agreement (CLA)](./CONTRIBUTING.md#contributor-license-agreement-cla)
## Screenshots/Videos
<!-- Translation changes are text-based - no visual changes expected -->
<!-- Reviewers should check the documentation site renders correctly for all languages -->
branch: auto-translate/staging-merge-${{ github.run_id }}
base: staging
labels: |
i18n
verify-translations:
needs: translate
runs-on: ubuntu-latest
if: always() # Run even if translation fails
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: staging
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: |
cd apps/docs
bun install
- name: Build documentation to verify translations
run: |
cd apps/docs
bun run build
- name: Report translation status
run: |
cd apps/docs
echo "## Translation Status Report" >> $GITHUB_STEP_SUMMARY
echo "**Triggered by merge to staging branch**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
en_count=$(find content/docs/en -name "*.mdx" | wc -l)
es_count=$(find content/docs/es -name "*.mdx" 2>/dev/null | wc -l || echo 0)
fr_count=$(find content/docs/fr -name "*.mdx" 2>/dev/null | wc -l || echo 0)
zh_count=$(find content/docs/zh -name "*.mdx" 2>/dev/null | wc -l || echo 0)
es_percentage=$((es_count * 100 / en_count))
fr_percentage=$((fr_count * 100 / en_count))
zh_percentage=$((zh_count * 100 / en_count))
echo "### Coverage Statistics" >> $GITHUB_STEP_SUMMARY
echo "- **🇬🇧 English**: $en_count files (source)" >> $GITHUB_STEP_SUMMARY
echo "- **🇪🇸 Spanish**: $es_count/$en_count files ($es_percentage%)" >> $GITHUB_STEP_SUMMARY
echo "- **🇫🇷 French**: $fr_count/$en_count files ($fr_percentage%)" >> $GITHUB_STEP_SUMMARY
echo "- **🇨🇳 Chinese**: $zh_count/$en_count files ($zh_percentage%)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "🔄 **Auto-translation PR**: Check for new pull request with updated translations" >> $GITHUB_STEP_SUMMARY

3
.gitignore vendored
View File

@@ -68,5 +68,4 @@ start-collector.sh
.vscode
## Helm Chart Tests
helm/sim/test
i18n.cache
helm/sim/test

View File

@@ -125,11 +125,10 @@ Update your `.env` file with the database URL:
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
```
4. Set up the database (from packages/db):
4. Set up the database:
```bash
cd packages/db
bunx drizzle-kit migrate --config=./drizzle.config.ts
bunx drizzle-kit migrate
```
5. Start the development servers:

View File

@@ -0,0 +1,5 @@
import type { ReactNode } from 'react'
export default function SlugLayout({ children }: { children: ReactNode }) {
return children
}

View File

@@ -0,0 +1,58 @@
import defaultMdxComponents from 'fumadocs-ui/mdx'
import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page'
import { notFound } from 'next/navigation'
import { source } from '@/lib/source'
export const dynamic = 'force-dynamic'
export default async function Page(props: { params: Promise<{ slug?: string[] }> }) {
const params = await props.params
const page = source.getPage(params.slug)
if (!page) notFound()
const MDX = page.data.body
return (
<DocsPage
toc={page.data.toc}
full={page.data.full}
tableOfContent={{
style: 'clerk',
enabled: true,
header: <div className='mb-2 font-medium text-sm'>On this page</div>,
single: false,
}}
article={{
className: 'scroll-smooth max-sm:pb-16',
}}
tableOfContentPopover={{
style: 'clerk',
enabled: true,
}}
footer={{
enabled: false,
}}
>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
<DocsBody>
<MDX components={defaultMdxComponents} />
</DocsBody>
</DocsPage>
)
}
export async function generateStaticParams() {
return source.generateParams()
}
export async function generateMetadata(props: { params: Promise<{ slug?: string[] }> }) {
const params = await props.params
const page = source.getPage(params.slug)
if (!page) notFound()
return {
title: page.data.title,
description: page.data.description,
}
}

View File

@@ -0,0 +1,58 @@
import type { ReactNode } from 'react'
import { DocsLayout } from 'fumadocs-ui/layouts/docs'
import { ExternalLink, GithubIcon } from 'lucide-react'
import Image from 'next/image'
import Link from 'next/link'
import { source } from '@/lib/source'
const GitHubLink = () => (
<div className='fixed right-4 bottom-4 z-50'>
<Link
href='https://github.com/simstudioai/sim'
target='_blank'
rel='noopener noreferrer'
className='flex h-8 w-8 items-center justify-center rounded-full border border-border bg-background transition-colors hover:bg-muted'
>
<GithubIcon className='h-4 w-4' />
</Link>
</div>
)
export default function Layout({ children }: { children: ReactNode }) {
return (
<>
<DocsLayout
tree={source.pageTree}
nav={{
title: (
<div className='flex items-center'>
<Image
src='/static/logo.png'
alt='Sim'
width={60}
height={24}
className='h-6 w-auto'
/>
</div>
),
}}
links={[
{
text: 'Visit Sim',
url: 'https://sim.ai',
icon: <ExternalLink className='h-4 w-4' />,
},
]}
sidebar={{
defaultOpenLevel: 0,
collapsible: true,
footer: null,
banner: null,
}}
>
{children}
</DocsLayout>
<GitHubLink />
</>
)
}

View File

@@ -1,161 +0,0 @@
import { findNeighbour } from 'fumadocs-core/server'
import defaultMdxComponents from 'fumadocs-ui/mdx'
import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page'
import { ChevronLeft, ChevronRight } from 'lucide-react'
import Link from 'next/link'
import { notFound } from 'next/navigation'
import { StructuredData } from '@/components/structured-data'
import { source } from '@/lib/source'
export const dynamic = 'force-dynamic'
export default async function Page(props: { params: Promise<{ slug?: string[]; lang: string }> }) {
const params = await props.params
const page = source.getPage(params.slug, params.lang)
if (!page) notFound()
const MDX = page.data.body
const baseUrl = 'https://docs.sim.ai'
const pageTreeRecord = source.pageTree as Record<string, any>
const pageTree =
pageTreeRecord[params.lang] ?? pageTreeRecord.en ?? Object.values(pageTreeRecord)[0]
const neighbours = pageTree ? findNeighbour(pageTree, page.url) : null
const CustomFooter = () => (
<div className='mt-12 flex items-center justify-between border-border border-t py-8'>
{neighbours?.previous ? (
<Link
href={neighbours.previous.url}
className='group flex items-center gap-2 text-muted-foreground transition-colors hover:text-foreground'
>
<ChevronLeft className='group-hover:-translate-x-1 h-4 w-4 transition-transform' />
<span className='font-medium'>{neighbours.previous.name}</span>
</Link>
) : (
<div />
)}
{neighbours?.next ? (
<Link
href={neighbours.next.url}
className='group flex items-center gap-2 text-muted-foreground transition-colors hover:text-foreground'
>
<span className='font-medium'>{neighbours.next.name}</span>
<ChevronRight className='h-4 w-4 transition-transform group-hover:translate-x-1' />
</Link>
) : (
<div />
)}
</div>
)
return (
<>
<StructuredData
title={page.data.title}
description={page.data.description || ''}
url={`${baseUrl}${page.url}`}
lang={params.lang}
/>
<DocsPage
toc={page.data.toc}
full={page.data.full}
tableOfContent={{
style: 'clerk',
enabled: true,
header: <div className='mb-2 font-medium text-sm'>On this page</div>,
single: false,
}}
article={{
className: 'scroll-smooth max-sm:pb-16',
}}
tableOfContentPopover={{
style: 'clerk',
enabled: true,
}}
footer={{
enabled: true,
component: <CustomFooter />,
}}
>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
<DocsBody>
<MDX components={defaultMdxComponents} />
</DocsBody>
</DocsPage>
</>
)
}
export async function generateStaticParams() {
return source.generateParams()
}
export async function generateMetadata(props: {
params: Promise<{ slug?: string[]; lang: string }>
}) {
const params = await props.params
const page = source.getPage(params.slug, params.lang)
if (!page) notFound()
const baseUrl = 'https://docs.sim.ai'
const fullUrl = `${baseUrl}${page.url}`
return {
title: page.data.title,
description:
page.data.description || 'Sim visual workflow builder for AI applications documentation',
keywords: [
'AI workflow builder',
'visual workflow editor',
'AI automation',
'workflow automation',
'AI agents',
'no-code AI',
'drag and drop workflows',
page.data.title?.toLowerCase().split(' '),
]
.flat()
.filter(Boolean),
authors: [{ name: 'Sim Team' }],
category: 'Developer Tools',
openGraph: {
title: page.data.title,
description:
page.data.description || 'Sim visual workflow builder for AI applications documentation',
url: fullUrl,
siteName: 'Sim Documentation',
type: 'article',
locale: params.lang,
alternateLocale: ['en', 'fr', 'zh'].filter((lang) => lang !== params.lang),
},
twitter: {
card: 'summary',
title: page.data.title,
description:
page.data.description || 'Sim visual workflow builder for AI applications documentation',
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
canonical: fullUrl,
alternates: {
canonical: fullUrl,
languages: {
en: `${baseUrl}/en${page.url.replace(`/${params.lang}`, '')}`,
fr: `${baseUrl}/fr${page.url.replace(`/${params.lang}`, '')}`,
zh: `${baseUrl}/zh${page.url.replace(`/${params.lang}`, '')}`,
},
},
}
}

View File

@@ -1,99 +0,0 @@
import type { ReactNode } from 'react'
import { defineI18nUI } from 'fumadocs-ui/i18n'
import { DocsLayout } from 'fumadocs-ui/layouts/docs'
import { RootProvider } from 'fumadocs-ui/provider'
import { ExternalLink, GithubIcon } from 'lucide-react'
import { Inter } from 'next/font/google'
import Image from 'next/image'
import Link from 'next/link'
import { LanguageDropdown } from '@/components/ui/language-dropdown'
import { i18n } from '@/lib/i18n'
import { source } from '@/lib/source'
import '../global.css'
import { Analytics } from '@vercel/analytics/next'
const inter = Inter({
subsets: ['latin'],
})
const { provider } = defineI18nUI(i18n, {
translations: {
en: {
displayName: 'English',
},
es: {
displayName: 'Español',
},
fr: {
displayName: 'Français',
},
zh: {
displayName: '简体中文',
},
},
})
const GitHubLink = () => (
<div className='fixed right-4 bottom-4 z-50'>
<Link
href='https://github.com/simstudioai/sim'
target='_blank'
rel='noopener noreferrer'
className='flex h-8 w-8 items-center justify-center rounded-full border border-border bg-background transition-colors hover:bg-muted'
>
<GithubIcon className='h-4 w-4' />
</Link>
</div>
)
type LayoutProps = {
children: ReactNode
params: Promise<{ lang: string }>
}
export default async function Layout({ children, params }: LayoutProps) {
const { lang } = await params
return (
<html lang={lang} className={inter.className} suppressHydrationWarning>
<body className='flex min-h-screen flex-col'>
<RootProvider i18n={provider(lang)}>
<DocsLayout
tree={source.pageTree[lang]}
nav={{
title: (
<div className='flex items-center gap-3'>
<Image
src='/static/logo.png'
alt='Sim'
width={60}
height={24}
className='h-6 w-auto'
/>
<LanguageDropdown />
</div>
),
}}
links={[
{
text: 'Visit Sim',
url: 'https://sim.ai',
icon: <ExternalLink className='h-4 w-4' />,
},
]}
sidebar={{
defaultOpenLevel: 0,
collapsible: true,
footer: null,
banner: null,
}}
>
{children}
</DocsLayout>
<GitHubLink />
<Analytics />
</RootProvider>
</body>
</html>
)
}

View File

@@ -1,32 +1,30 @@
import type { ReactNode } from 'react'
import { RootProvider } from 'fumadocs-ui/provider'
import { Inter } from 'next/font/google'
import './global.css'
import { Analytics } from '@vercel/analytics/next'
export default function RootLayout({ children }: { children: ReactNode }) {
return children
const inter = Inter({
subsets: ['latin'],
})
export default function Layout({ children }: { children: ReactNode }) {
return (
<html lang='en' className={inter.className} suppressHydrationWarning>
<body className='flex min-h-screen flex-col'>
<RootProvider>
{children}
<Analytics />
</RootProvider>
</body>
</html>
)
}
export const metadata = {
metadataBase: new URL('https://docs.sim.ai'),
title: {
default: 'Sim Documentation - Visual Workflow Builder for AI Applications',
template: '%s',
},
title: 'Sim',
description:
'Comprehensive documentation for Sim - the visual workflow builder for AI applications. Create powerful AI agents, automation workflows, and data processing pipelines by connecting blocks on a canvas—no coding required.',
keywords: [
'AI workflow builder',
'visual workflow editor',
'AI automation',
'workflow automation',
'AI agents',
'no-code AI',
'drag and drop workflows',
'AI integrations',
'workflow canvas',
'AI development platform',
],
authors: [{ name: 'Sim Team', url: 'https://sim.ai' }],
category: 'Developer Tools',
classification: 'Developer Documentation',
'Build agents in seconds with a drag and drop workflow builder. Access comprehensive documentation to help you create efficient workflows and maximize your automation capabilities.',
manifest: '/favicon/site.webmanifest',
icons: {
icon: [
@@ -41,40 +39,4 @@ export const metadata = {
statusBarStyle: 'default',
title: 'Sim Docs',
},
openGraph: {
type: 'website',
locale: 'en_US',
alternateLocale: ['fr_FR', 'zh_CN'],
url: 'https://docs.sim.ai',
siteName: 'Sim Documentation',
title: 'Sim Documentation - Visual Workflow Builder for AI Applications',
description:
'Comprehensive documentation for Sim - the visual workflow builder for AI applications. Create powerful AI agents, automation workflows, and data processing pipelines.',
},
twitter: {
card: 'summary',
title: 'Sim Documentation - Visual Workflow Builder for AI Applications',
description:
'Comprehensive documentation for Sim - the visual workflow builder for AI applications.',
creator: '@sim_ai',
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
alternates: {
canonical: 'https://docs.sim.ai',
languages: {
en: '/en',
fr: '/fr',
zh: '/zh',
},
},
}

View File

@@ -1,6 +1,7 @@
import { getLLMText } from '@/lib/llms'
import { source } from '@/lib/source'
// cached forever
export const revalidate = false
export async function GET() {

View File

@@ -1,58 +0,0 @@
export const revalidate = false
export async function GET() {
const baseUrl = 'https://docs.sim.ai'
const robotsTxt = `# Robots.txt for Sim Documentation
# Generated on ${new Date().toISOString()}
User-agent: *
Allow: /
# Allow all well-behaved crawlers
User-agent: Googlebot
Allow: /
User-agent: Bingbot
Allow: /
# AI and LLM crawlers
User-agent: GPTBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: CCBot
Allow: /
User-agent: anthropic-ai
Allow: /
User-agent: Claude-Web
Allow: /
# Disallow admin and internal paths (if any exist)
Disallow: /.next/
Disallow: /api/internal/
Disallow: /_next/static/
Disallow: /admin/
# Allow but don't prioritize these
Allow: /api/search
Allow: /llms.txt
Allow: /llms.mdx/
# Sitemaps
Sitemap: ${baseUrl}/sitemap.xml
# Additional resources for AI indexing
# See https://github.com/AnswerDotAI/llms-txt for more info
# LLM-friendly content available at: ${baseUrl}/llms.txt`
return new Response(robotsTxt, {
headers: {
'Content-Type': 'text/plain',
},
})
}

View File

@@ -1,54 +0,0 @@
import { i18n } from '@/lib/i18n'
import { source } from '@/lib/source'
export const revalidate = false
export async function GET() {
const baseUrl = 'https://docs.sim.ai'
const allPages = source.getPages()
const urls = allPages
.flatMap((page) => {
const urlWithoutLang = page.url.replace(/^\/[a-z]{2}\//, '/')
return i18n.languages.map((lang) => {
const url =
lang === i18n.defaultLanguage
? `${baseUrl}${urlWithoutLang}`
: `${baseUrl}/${lang}${urlWithoutLang}`
return ` <url>
<loc>${url}</loc>
<lastmod>${new Date().toISOString().split('T')[0]}</lastmod>
<changefreq>weekly</changefreq>
<priority>${urlWithoutLang === '/introduction' ? '1.0' : '0.8'}</priority>
${i18n.languages.length > 1 ? generateAlternateLinks(baseUrl, urlWithoutLang) : ''}
</url>`
})
})
.join('\n')
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
${urls}
</urlset>`
return new Response(sitemap, {
headers: {
'Content-Type': 'application/xml',
},
})
}
function generateAlternateLinks(baseUrl: string, urlWithoutLang: string): string {
return i18n.languages
.map((lang) => {
const url =
lang === i18n.defaultLanguage
? `${baseUrl}${urlWithoutLang}`
: `${baseUrl}/${lang}${urlWithoutLang}`
return ` <xhtml:link rel="alternate" hreflang="${lang}" href="${url}" />`
})
.join('\n')
}

View File

@@ -1,174 +0,0 @@
import Script from 'next/script'
interface StructuredDataProps {
title: string
description: string
url: string
lang: string
dateModified?: string
breadcrumb?: Array<{ name: string; url: string }>
}
export function StructuredData({
title,
description,
url,
lang,
dateModified,
breadcrumb,
}: StructuredDataProps) {
const baseUrl = 'https://docs.sim.ai'
const articleStructuredData = {
'@context': 'https://schema.org',
'@type': 'TechArticle',
headline: title,
description: description,
url: url,
datePublished: dateModified || new Date().toISOString(),
dateModified: dateModified || new Date().toISOString(),
author: {
'@type': 'Organization',
name: 'Sim Team',
url: baseUrl,
},
publisher: {
'@type': 'Organization',
name: 'Sim',
url: baseUrl,
logo: {
'@type': 'ImageObject',
url: `${baseUrl}/static/logo.png`,
},
},
mainEntityOfPage: {
'@type': 'WebPage',
'@id': url,
},
inLanguage: lang,
isPartOf: {
'@type': 'WebSite',
name: 'Sim Documentation',
url: baseUrl,
},
potentialAction: {
'@type': 'ReadAction',
target: url,
},
}
const breadcrumbStructuredData = breadcrumb && {
'@context': 'https://schema.org',
'@type': 'BreadcrumbList',
itemListElement: breadcrumb.map((item, index) => ({
'@type': 'ListItem',
position: index + 1,
name: item.name,
item: item.url,
})),
}
const websiteStructuredData = url === baseUrl && {
'@context': 'https://schema.org',
'@type': 'WebSite',
name: 'Sim Documentation',
url: baseUrl,
description:
'Comprehensive documentation for Sim visual workflow builder for AI applications. Create powerful AI agents, automation workflows, and data processing pipelines.',
publisher: {
'@type': 'Organization',
name: 'Sim',
url: baseUrl,
},
potentialAction: {
'@type': 'SearchAction',
target: {
'@type': 'EntryPoint',
urlTemplate: `${baseUrl}/search?q={search_term_string}`,
},
'query-input': 'required name=search_term_string',
},
inLanguage: ['en', 'fr', 'zh'],
}
const faqStructuredData = title.toLowerCase().includes('faq') && {
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: [],
}
const softwareStructuredData = {
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
name: 'Sim',
applicationCategory: 'DeveloperApplication',
operatingSystem: 'Any',
description:
'Visual workflow builder for AI applications. Create powerful AI agents, automation workflows, and data processing pipelines by connecting blocks on a canvas—no coding required.',
url: baseUrl,
author: {
'@type': 'Organization',
name: 'Sim Team',
},
offers: {
'@type': 'Offer',
category: 'Developer Tools',
},
featureList: [
'Visual workflow builder with drag-and-drop interface',
'AI agent creation and automation',
'80+ built-in integrations',
'Real-time team collaboration',
'Multiple deployment options',
'Custom integrations via MCP protocol',
],
}
return (
<>
<Script
id='article-structured-data'
type='application/ld+json'
dangerouslySetInnerHTML={{
__html: JSON.stringify(articleStructuredData),
}}
/>
{breadcrumbStructuredData && (
<Script
id='breadcrumb-structured-data'
type='application/ld+json'
dangerouslySetInnerHTML={{
__html: JSON.stringify(breadcrumbStructuredData),
}}
/>
)}
{websiteStructuredData && (
<Script
id='website-structured-data'
type='application/ld+json'
dangerouslySetInnerHTML={{
__html: JSON.stringify(websiteStructuredData),
}}
/>
)}
{faqStructuredData && (
<Script
id='faq-structured-data'
type='application/ld+json'
dangerouslySetInnerHTML={{
__html: JSON.stringify(faqStructuredData),
}}
/>
)}
{url === baseUrl && (
<Script
id='software-structured-data'
type='application/ld+json'
dangerouslySetInnerHTML={{
__html: JSON.stringify(softwareStructuredData),
}}
/>
)}
</>
)
}

View File

@@ -11,7 +11,7 @@ interface ImageProps extends Omit<NextImageProps, 'className'> {
}
export function Image({
className = 'w-full',
className = 'w-full rounded-xl border border-border shadow-sm overflow-hidden',
enableLightbox = true,
alt = '',
src,
@@ -29,7 +29,7 @@ export function Image({
<>
<NextImage
className={cn(
'overflow-hidden rounded-xl border border-border object-cover shadow-sm',
'object-cover',
enableLightbox && 'cursor-pointer transition-opacity hover:opacity-90',
className
)}

View File

@@ -1,107 +0,0 @@
'use client'
import { useEffect, useState } from 'react'
import { Check, ChevronDown } from 'lucide-react'
import { useParams, usePathname } from 'next/navigation'
const languages = {
en: { name: 'English', flag: '🇺🇸' },
es: { name: 'Español', flag: '🇪🇸' },
fr: { name: 'Français', flag: '🇫🇷' },
zh: { name: '简体中文', flag: '🇨🇳' },
}
export function LanguageDropdown() {
const [isOpen, setIsOpen] = useState(false)
const pathname = usePathname()
const params = useParams()
const [currentLang, setCurrentLang] = useState(() => {
const langFromParams = params?.lang as string
return langFromParams && Object.keys(languages).includes(langFromParams) ? langFromParams : 'en'
})
useEffect(() => {
const langFromParams = params?.lang as string
if (langFromParams && Object.keys(languages).includes(langFromParams)) {
if (langFromParams !== currentLang) {
setCurrentLang(langFromParams)
}
} else {
if (currentLang !== 'en') {
setCurrentLang('en')
}
}
}, [params, currentLang])
const handleLanguageChange = (locale: string) => {
if (locale === currentLang) {
setIsOpen(false)
return
}
setIsOpen(false)
const segments = pathname.split('/').filter(Boolean)
if (segments[0] && Object.keys(languages).includes(segments[0])) {
segments.shift()
}
let newPath = ''
if (locale === 'en') {
newPath = segments.length > 0 ? `/${segments.join('/')}` : '/introduction'
} else {
newPath = `/${locale}${segments.length > 0 ? `/${segments.join('/')}` : '/introduction'}`
}
window.location.href = newPath
}
return (
<div className='relative'>
<button
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
setIsOpen(!isOpen)
}}
className='flex items-center gap-2 rounded-xl border border-border/20 bg-muted/50 px-3 py-2 text-sm backdrop-blur-sm transition-colors hover:bg-muted'
>
<span className='text-base'>{languages[currentLang as keyof typeof languages]?.flag}</span>
<span className='font-medium text-foreground'>
{languages[currentLang as keyof typeof languages]?.name}
</span>
<ChevronDown
className={`h-3 w-3 text-muted-foreground transition-transform ${isOpen ? 'rotate-180' : ''}`}
/>
</button>
{isOpen && (
<>
<div className='fixed inset-0 z-10' onClick={() => setIsOpen(false)} />
<div className='absolute top-full left-0 z-20 mt-1 w-48 rounded-lg border border-border/50 bg-background/95 shadow-xl backdrop-blur-md'>
{Object.entries(languages).map(([code, lang]) => (
<button
key={code}
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
handleLanguageChange(code)
}}
className={`flex w-full items-center gap-3 px-3 py-2.5 text-sm transition-colors first:rounded-t-lg last:rounded-b-lg hover:bg-muted/80 ${
currentLang === code ? 'bg-muted/60 font-medium text-primary' : 'text-foreground'
}`}
>
<span className='text-base'>{lang.flag}</span>
<span>{lang.name}</span>
{currentLang === code && <Check className='ml-auto h-4 w-4 text-primary' />}
</button>
))}
</div>
</>
)}
</div>
)
}

View File

@@ -0,0 +1,16 @@
{
"title": "Blocks",
"pages": [
"agent",
"api",
"condition",
"evaluator",
"function",
"loop",
"parallel",
"response",
"router",
"workflow"
],
"defaultOpen": false
}

View File

@@ -0,0 +1,5 @@
{
"title": "Connections",
"pages": ["basics", "tags", "data-structure"],
"defaultOpen": false
}

View File

@@ -0,0 +1,5 @@
{
"title": "Copilot",
"pages": ["index"],
"defaultOpen": false
}

View File

@@ -1,60 +0,0 @@
---
title: Documentation
---
import { Card, Cards } from 'fumadocs-ui/components/card'
# Sim Documentation
Welcome to Sim, a visual workflow builder for AI applications. Build powerful AI agents, automation workflows, and data processing pipelines by connecting blocks on a canvas.
## Quick Start
<Cards>
<Card title="Introduction" href="/introduction">
Learn what you can build with Sim
</Card>
<Card title="Getting Started" href="/getting-started">
Create your first workflow in 10 minutes
</Card>
<Card title="Workflow Blocks" href="/blocks">
Learn about the building blocks
</Card>
<Card title="Tools & Integrations" href="/tools">
Explore 80+ built-in integrations
</Card>
</Cards>
## Core Concepts
<Cards>
<Card title="Connections" href="/connections">
Understand how data flows between blocks
</Card>
<Card title="Variables" href="/variables">
Work with workflow and environment variables
</Card>
<Card title="Execution" href="/execution">
Monitor workflow runs and manage costs
</Card>
<Card title="Triggers" href="/triggers">
Start workflows via API, webhooks, or schedules
</Card>
</Cards>
## Advanced Features
<Cards>
<Card title="Team Management" href="/permissions/roles-and-permissions">
Set up workspace roles and permissions
</Card>
<Card title="YAML Configuration" href="/yaml">
Define workflows as code
</Card>
<Card title="MCP Integration" href="/mcp">
Connect external services with Model Context Protocol
</Card>
<Card title="SDKs" href="/sdks">
Integrate Sim into your applications
</Card>
</Cards>

View File

@@ -1,86 +0,0 @@
---
title: Google Forms
description: Read responses from a Google Form
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_forms"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon" xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 65' fill='none'>
<path
d='M29.583 0H4.438C1.997 0 0 1.997 0 4.438v56.208C0 63.086 1.997 65.083 4.438 65.083h38.458c2.44 0 4.437-1.997 4.437-4.437V17.75L36.979 10.354 29.583 0Z'
fill='#673AB7'
/>
<path
d='M29.583 0v10.354c0 2.45 1.986 4.438 4.438 4.438h13.312L36.979 10.354 29.583 0Z'
fill='#B39DDB'
/>
<path
d='M19.229 50.292h16.271v-2.959H19.229v2.959Zm0-17.75v2.958h16.271v-2.958H19.229Zm-3.698 1.479c0 1.224-0.995 2.219-2.219 2.219s-2.219-0.995-2.219-2.219c0-1.224 0.995-2.219 2.219-2.219s2.219 0.995 2.219 2.219Zm0 7.396c0 1.224-0.995 2.219-2.219 2.219s-2.219-0.995-2.219-2.219c0-1.224 0.995-2.219 2.219-2.219s2.219 0.995 2.219 2.219Zm0 7.396c0 1.224-0.995 2.219-2.219 2.219s-2.219-0.995-2.219-2.219c0-1.224 0.995-2.219 2.219-2.219s2.219 0.995 2.219 2.219Zm3.698-5.917h16.271v-2.959H19.229v2.959Z'
fill='#F1F1F1'
/>
<defs>
<linearGradient
id='gf-gradient'
x1='30.881'
y1='16.452'
x2='47.333'
y2='32.9'
gradientUnits='userSpaceOnUse'
>
<stop stopColor='#9575CD' />
<stop offset='1' stopColor='#7E57C2' />
</linearGradient>
</defs>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Forms](https://forms.google.com) is Google's online survey and form tool that allows users to create forms, collect responses, and analyze results. As part of Google's productivity suite, Google Forms makes it easy to gather information, feedback, and data from users.
Learn how to integrate the Google Forms tool in Sim to automatically read and process form responses in your workflows. This tutorial walks you through connecting Google Forms, retrieving responses, and using collected data to power automation. Perfect for syncing survey results, registrations, or feedback with your agents in real-time.
With Google Forms, you can:
- **Create surveys and forms**: Design custom forms for feedback, registration, quizzes, and more
- **Collect responses automatically**: Gather data from users in real-time
- **Analyze results**: View responses in Google Forms or export to Google Sheets for further analysis
- **Collaborate easily**: Share forms and work with others to build and review questions
- **Integrate with other Google services**: Connect with Google Sheets, Drive, and more
In Sim, the Google Forms integration enables your agents to programmatically access form responses. This allows for powerful automation scenarios such as processing survey data, triggering workflows based on new submissions, and syncing form results with other tools. Your agents can fetch all responses for a form, retrieve a specific response, and use the data to drive intelligent automation. By connecting Sim with Google Forms, you can automate data collection, streamline feedback processing, and incorporate form responses into your agent's capabilities.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Integrate Google Forms into your workflow. Provide a Form ID to list responses, or specify a Response ID to fetch a single response. Requires OAuth.
## Tools
### `google_forms_get_responses`
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| formId | string | Yes | The ID of the Google Form |
| responseId | string | No | If provided, returns this specific response |
| pageSize | number | No | Max responses to return (service may return fewer). Defaults to 5000 |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `data` | json | Response or list of responses |
## Notes
- Category: `tools`
- Type: `google_forms`

View File

@@ -1,70 +0,0 @@
---
title: Mail
description: Send emails using the internal mail service
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="mail"
color="#181C1E"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 0 30 24'
fill='none'
xmlns='http://www.w3.org/2000/svg'
>
<path
d='M2.35742 5.83288L11.7674 12.1071C13.0656 12.9712 13.7141 13.404 14.4151 13.5725C15.0352 13.7208 15.681 13.7208 16.2998 13.5725C17.0008 13.404 17.6492 12.9712 18.9475 12.1071L28.3574 5.83288M8.82844 21.7219H21.8864C24.1513 21.7219 25.2837 21.7219 26.1492 21.2811C26.9097 20.8931 27.5278 20.2744 27.9152 19.5137C28.3574 18.6482 28.3574 17.5158 28.3574 15.2509V7.97102C28.3574 5.70616 28.3574 4.57373 27.9166 3.70823C27.5288 2.94727 26.9102 2.32858 26.1492 1.94084C25.2837 1.5 24.1513 1.5 21.8864 1.5H8.82844C6.56358 1.5 5.43115 1.5 4.56566 1.94084C3.80519 2.32881 3.187 2.94747 2.79961 3.70823C2.35742 4.57373 2.35742 5.70616 2.35742 7.97102V15.2509C2.35742 17.5158 2.35742 18.6482 2.79826 19.5137C3.186 20.2747 3.80469 20.8933 4.56566 21.2811C5.43115 21.7219 6.56358 21.7219 8.82844 21.7219Z'
stroke='currentColor'
strokeWidth='2.5'
strokeLinecap='round'
strokeLinejoin='round'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
The Mail block allows you to send emails directly from your workflows using Sim's own mail sending infrastructure powered by [Resend](https://resend.com/). This integration enables you to programmatically deliver notifications, alerts, and other important information to users' email addresses without requiring any external configuration or OAuth.
Our internal mail service is designed for reliability and ease of use, making it ideal for automating communications and ensuring your messages reach recipients efficiently.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Send emails directly using the internal mail service. Uses MAIL_BLOCK_FROM_ADDRESS if configured, otherwise falls back to FROM_EMAIL_ADDRESS. No external configuration or OAuth required. Perfect for sending notifications, alerts, or general purpose emails from your workflows. Supports HTML formatting.
## Tools
### `mail_send`
Send an email using the internal mail service without requiring OAuth or external configuration
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `to` | string | Yes | Recipient email address |
| `subject` | string | Yes | Email subject |
| `body` | string | Yes | Email body content |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the email was sent successfully |
| `to` | string | Recipient email address |
| `subject` | string | Email subject |
| `body` | string | Email body content |
## Notes
- Category: `tools`
- Type: `mail`

View File

@@ -1,40 +0,0 @@
---
title: MCP Tool
description: Execute tools from Model Context Protocol (MCP) servers
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="mcp"
color="#181C1E"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='2'
strokeLinecap='round'
strokeLinejoin='round'
>
<rect x='2' y='2' rx='2' ry='2' />
<rect x='2' y='14' rx='2' ry='2' />
<line x1='6' x2='6.01' y1='6' y2='6' />
<line x1='6' x2='6.01' y1='18' y2='18' />
</svg>`}
/>
## Usage Instructions
Integrate MCP into the workflow. Can execute tools from MCP servers. Requires MCP servers in workspace settings.
## Notes
- Category: `tools`
- Type: `mcp`

View File

@@ -1,53 +0,0 @@
---
title: SMS
description: Send SMS messages using the internal SMS service
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sms"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon" fill="#000000" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M 2 5 L 2 25 L 7 25 L 7 30.09375 L 8.625 28.78125 L 13.34375 25 L 30 25 L 30 5 Z M 4 7 L 28 7 L 28 23 L 12.65625 23 L 12.375 23.21875 L 9 25.90625 L 9 23 L 4 23 Z M 8 12 L 8 14 L 24 14 L 24 12 Z M 8 16 L 8 18 L 20 18 L 20 16 Z"/></svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
The SMS block allows you to send text messages directly from your workflows using Sim's own SMS sending infrastructure powered by Twilio. This integration enables you to programmatically deliver notifications, alerts, and other important information to users' mobile devices without requiring any external configuration or OAuth.
Our internal SMS service is designed for reliability and ease of use, making it ideal for automating communications and ensuring your messages reach recipients efficiently.
{/* MANUAL-CONTENT-END */}
## Usage Instructions
Send SMS messages directly using the internal SMS service powered by Twilio. No external configuration or OAuth required. Perfect for sending notifications, alerts, or general purpose text messages from your workflows. Requires valid phone numbers with country codes.
## Tools
### `sms_send`
Send an SMS message using the internal SMS service powered by Twilio
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `to` | string | Yes | Recipient phone number \(include country code, e.g., +1234567890\) |
| `body` | string | Yes | SMS message content |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `success` | boolean | Whether the SMS was sent successfully |
| `to` | string | Recipient phone number |
| `body` | string | SMS message content |
## Notes
- Category: `tools`
- Type: `sms`

View File

@@ -1,306 +0,0 @@
---
title: Agente
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
El bloque Agente sirve como interfaz entre tu flujo de trabajo y los Modelos de Lenguaje Grandes (LLMs). Ejecuta solicitudes de inferencia contra varios proveedores de IA, procesa entradas de lenguaje natural según las instrucciones definidas y genera salidas estructuradas o no estructuradas para su consumo posterior.
<div className="flex justify-center">
<Image
src="/static/blocks/agent.png"
alt="Configuración del bloque Agente"
width={500}
height={400}
className="my-6"
/>
</div>
## Descripción general
El bloque Agente te permite:
<Steps>
<Step>
<strong>Procesar lenguaje natural</strong>: Analizar la entrada del usuario y generar respuestas contextuales
</Step>
<Step>
<strong>Ejecutar tareas impulsadas por IA</strong>: Realizar análisis de contenido, generación y toma de decisiones
</Step>
<Step>
<strong>Llamar a herramientas externas</strong>: Acceder a APIs, bases de datos y servicios durante el procesamiento
</Step>
<Step>
<strong>Generar salida estructurada</strong>: Devolver datos JSON que coincidan con los requisitos de tu esquema
</Step>
</Steps>
## Opciones de configuración
### Prompt del sistema
El prompt del sistema establece los parámetros operativos y las restricciones de comportamiento del agente. Esta configuración define el rol del agente, la metodología de respuesta y los límites de procesamiento para todas las solicitudes entrantes.
```markdown
You are a helpful assistant that specializes in financial analysis.
Always provide clear explanations and cite sources when possible.
When responding to questions about investments, include risk disclaimers.
```
### Prompt del usuario
El prompt del usuario representa los datos de entrada principales para el procesamiento de inferencia. Este parámetro acepta texto en lenguaje natural o datos estructurados que el agente analizará y a los que responderá. Las fuentes de entrada incluyen:
- **Configuración estática**: Entrada de texto directa especificada en la configuración del bloque
- **Entrada dinámica**: Datos pasados desde bloques anteriores a través de interfaces de conexión
- **Generación en tiempo de ejecución**: Contenido generado programáticamente durante la ejecución del flujo de trabajo
### Selección de modelo
El bloque Agente admite múltiples proveedores de LLM a través de una interfaz de inferencia unificada. Los modelos disponibles incluyen:
**Modelos de OpenAI**: GPT-5, GPT-4o, o1, o3, o4-mini, gpt-4.1 (inferencia basada en API)
**Modelos de Anthropic**: Claude 3.7 Sonnet (inferencia basada en API)
**Modelos de Google**: Gemini 2.5 Pro, Gemini 2.0 Flash (inferencia basada en API)
**Proveedores alternativos**: Groq, Cerebras, xAI, DeepSeek (inferencia basada en API)
**Despliegue local**: Modelos compatibles con Ollama (inferencia autohospedada)
<div className="mx-auto w-3/5 overflow-hidden rounded-lg">
<Video src="models.mp4" width={500} height={350} />
</div>
### Temperatura
Controla la creatividad y aleatoriedad de las respuestas:
<Tabs items={['Baja (0-0.3)', 'Media (0.3-0.7)', 'Alta (0.7-2.0)']}>
<Tab>
Respuestas más deterministas y enfocadas. Ideal para tareas factuales, atención al cliente y
situaciones donde la precisión es crítica.
</Tab>
<Tab>
Equilibrio entre creatividad y enfoque. Adecuado para aplicaciones de uso general que requieren
tanto precisión como cierta creatividad.
</Tab>
<Tab>
Respuestas más creativas y variadas. Ideal para escritura creativa, lluvia de ideas y generación
de ideas diversas.
</Tab>
</Tabs>
<div className="mt-4 text-sm text-gray-600 dark:text-gray-400">
El rango de temperatura (0-1 o 0-2) varía dependiendo del modelo seleccionado.
</div>
### Clave API
Tu clave API para el proveedor de LLM seleccionado. Se almacena de forma segura y se utiliza para la autenticación.
### Herramientas
Las herramientas amplían las capacidades del agente mediante integraciones de API externas y conexiones de servicios. El sistema de herramientas permite la llamada a funciones, permitiendo al agente ejecutar operaciones más allá de la generación de texto.
**Proceso de integración de herramientas**:
1. Accede a la sección de configuración de Herramientas dentro del bloque del Agente
2. Selecciona entre más de 60 integraciones predefinidas o define funciones personalizadas
3. Configura los parámetros de autenticación y las restricciones operativas
<div className="mx-auto w-3/5 overflow-hidden rounded-lg">
<Video src="tools.mp4" width={500} height={350} />
</div>
**Categorías de herramientas disponibles**:
- **Comunicación**: Gmail, Slack, Telegram, WhatsApp, Microsoft Teams
- **Fuentes de datos**: Notion, Google Sheets, Airtable, Supabase, Pinecone
- **Servicios web**: Firecrawl, Google Search, Exa AI, automatización de navegador
- **Desarrollo**: GitHub, Jira, gestión de repositorios y problemas en Linear
- **Servicios de IA**: OpenAI, Perplexity, Hugging Face, ElevenLabs
**Control de ejecución de herramientas**:
- **Auto**: El modelo determina la invocación de herramientas según el contexto y la necesidad
- **Requerido**: La herramienta debe ser llamada durante cada solicitud de inferencia
- **Ninguno**: Definición de herramienta disponible pero excluida del contexto del modelo
<div className="mx-auto w-3/5 overflow-hidden rounded-lg">
<Video src="granular-tool-control.mp4" width={500} height={350} />
</div>
### Formato de respuesta
El parámetro de formato de respuesta impone la generación de salidas estructuradas mediante la validación de esquemas JSON. Esto asegura respuestas consistentes y legibles por máquina que se ajustan a estructuras de datos predefinidas:
```json
{
"name": "user_analysis",
"schema": {
"type": "object",
"properties": {
"sentiment": {
"type": "string",
"enum": ["positive", "negative", "neutral"]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": ["sentiment", "confidence"]
}
}
```
Esta configuración restringe la salida del modelo para que cumpla con el esquema especificado, evitando respuestas de texto libre y asegurando la generación de datos estructurados.
### Acceso a los resultados
Después de que un agente completa su tarea, puedes acceder a sus salidas:
- **`<agent.content>`**: El texto de respuesta o datos estructurados del agente
- **`<agent.tokens>`**: Estadísticas de uso de tokens (prompt, completado, total)
- **`<agent.tool_calls>`**: Detalles de cualquier herramienta que el agente utilizó durante la ejecución
- **`<agent.cost>`**: Costo estimado de la llamada a la API (si está disponible)
## Funciones avanzadas
### Memoria + Agente: Historial de conversación
Utiliza un bloque `Memory` con un `id` consistente (por ejemplo, `chat`) para persistir mensajes entre ejecuciones, e incluir ese historial en el prompt del agente.
- Añade el mensaje del usuario antes del agente
- Lee el historial de conversación para contexto
- Añade la respuesta del agente después de que se ejecute
```yaml
# 1) Add latest user message
- Memory (operation: add)
id: chat
role: user
content: {{input}}
# 2) Load conversation history
- Memory (operation: get)
id: chat
# 3) Run the agent with prior messages available
- Agent
System Prompt: ...
User Prompt: |
Use the conversation so far:
{{memory_get.memories}}
Current user message: {{input}}
# 4) Store the agent reply
- Memory (operation: add)
id: chat
role: assistant
content: {{agent.content}}
```
Consulta la referencia del bloque `Memory` para más detalles: [/tools/memory](/tools/memory).
## Entradas y salidas
<Tabs items={['Configuración', 'Variables', 'Resultados']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Prompt del sistema</strong>: Instrucciones que definen el comportamiento y rol del agente
</li>
<li>
<strong>Prompt del usuario</strong>: Texto de entrada o datos a procesar
</li>
<li>
<strong>Modelo</strong>: Selección del modelo de IA (OpenAI, Anthropic, Google, etc.)
</li>
<li>
<strong>Temperatura</strong>: Control de aleatoriedad de respuesta (0-2)
</li>
<li>
<strong>Herramientas</strong>: Array de herramientas disponibles para llamadas a funciones
</li>
<li>
<strong>Formato de respuesta</strong>: Esquema JSON para salida estructurada
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>agent.content</strong>: Texto de respuesta o datos estructurados del agente
</li>
<li>
<strong>agent.tokens</strong>: Objeto de estadísticas de uso de tokens
</li>
<li>
<strong>agent.tool_calls</strong>: Array de detalles de ejecución de herramientas
</li>
<li>
<strong>agent.cost</strong>: Costo estimado de la llamada a la API (si está disponible)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Contenido</strong>: Salida de respuesta principal del agente
</li>
<li>
<strong>Metadatos</strong>: Estadísticas de uso y detalles de ejecución
</li>
<li>
<strong>Acceso</strong>: Disponible en bloques después del agente
</li>
</ul>
</Tab>
</Tabs>
## Ejemplos de casos de uso
### Automatización de atención al cliente
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Gestionar consultas de clientes con acceso a base de datos</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El usuario envía un ticket de soporte a través del bloque API</li>
<li>El agente verifica pedidos/suscripciones en Postgres y busca en la base de conocimientos para obtener orientación</li>
<li>Si se necesita escalamiento, el agente crea una incidencia en Linear con el contexto relevante</li>
<li>El agente redacta una respuesta clara por correo electrónico</li>
<li>Gmail envía la respuesta al cliente</li>
<li>La conversación se guarda en Memoria para mantener el historial para mensajes futuros</li>
</ol>
</div>
### Análisis de contenido multi-modelo
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Analizar contenido con diferentes modelos de IA</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de función procesa el documento cargado</li>
<li>El agente con GPT-4o realiza análisis técnico</li>
<li>El agente con Claude analiza el sentimiento y tono</li>
<li>El bloque de función combina los resultados para el informe final</li>
</ol>
</div>
### Asistente de investigación con herramientas
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Asistente de investigación con búsqueda web y acceso a documentos</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Consulta del usuario recibida a través de entrada</li>
<li>El agente busca en la web usando la herramienta de Google Search</li>
<li>El agente accede a la base de datos de Notion para documentos internos</li>
<li>El agente compila un informe de investigación completo</li>
</ol>
</div>
## Mejores prácticas
- **Sé específico en los prompts del sistema**: Define claramente el rol, tono y limitaciones del agente. Cuanto más específicas sean tus instrucciones, mejor podrá el agente cumplir con su propósito previsto.
- **Elige la configuración de temperatura adecuada**: Usa configuraciones de temperatura más bajas (0-0.3) cuando la precisión es importante, o aumenta la temperatura (0.7-2.0) para respuestas más creativas o variadas
- **Aprovecha las herramientas de manera efectiva**: Integra herramientas que complementen el propósito del agente y mejoren sus capacidades. Sé selectivo sobre qué herramientas proporcionas para evitar sobrecargar al agente. Para tareas con poca superposición, usa otro bloque de Agente para obtener los mejores resultados.

View File

@@ -1,232 +0,0 @@
---
title: API
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
El bloque API te permite conectar tu flujo de trabajo a servicios externos a través de endpoints API utilizando peticiones HTTP. Admite varios métodos como GET, POST, PUT, DELETE y PATCH, permitiéndote interactuar con prácticamente cualquier endpoint API.
<div className="flex justify-center">
<Image
src="/static/blocks/api.png"
alt="Bloque API"
width={500}
height={400}
className="my-6"
/>
</div>
## Descripción general
El bloque API te permite:
<Steps>
<Step>
<strong>Conectar con servicios externos</strong>: Realizar peticiones HTTP a APIs REST y servicios web
</Step>
<Step>
<strong>Enviar y recibir datos</strong>: Procesar respuestas y transformar datos de fuentes externas
</Step>
<Step>
<strong>Integrar plataformas de terceros</strong>: Conectar con servicios como Stripe, Slack o APIs personalizadas
</Step>
<Step>
<strong>Gestionar la autenticación</strong>: Admitir varios métodos de autenticación, incluyendo tokens Bearer y claves API
</Step>
</Steps>
## Cómo funciona
El bloque API procesa las peticiones HTTP a través de un enfoque estructurado:
1. **Configurar petición** - Establecer URL, método, cabeceras y parámetros del cuerpo
2. **Ejecutar petición** - Enviar petición HTTP al endpoint especificado
3. **Procesar respuesta** - Gestionar datos de respuesta, códigos de estado y cabeceras
4. **Gestión de errores** - Administrar tiempos de espera, reintentos y condiciones de error
## Opciones de configuración
### URL
La URL del endpoint para la petición API. Puede ser:
- Una URL estática introducida directamente en el bloque
- Una URL dinámica conectada desde la salida de otro bloque
- Una URL con parámetros de ruta
### Método
Selecciona el método HTTP para tu petición:
- **GET**: Recuperar datos del servidor
- **POST**: Enviar datos al servidor para crear un recurso
- **PUT**: Actualizar un recurso existente en el servidor
- **DELETE**: Eliminar un recurso del servidor
- **PATCH**: Actualizar parcialmente un recurso existente
### Parámetros de consulta
Define pares clave-valor que se añadirán a la URL como parámetros de consulta. Por ejemplo:
```
Key: apiKey
Value: your_api_key_here
Key: limit
Value: 10
```
Estos se añadirían a la URL como `?apiKey=your_api_key_here&limit=10`.
### Cabeceras
Configura las cabeceras HTTP para tu solicitud. Las cabeceras comunes incluyen:
```
Key: Content-Type
Value: application/json
Key: Authorization
Value: Bearer your_token_here
```
### Cuerpo de la solicitud
Para métodos que admiten un cuerpo de solicitud (POST, PUT, PATCH), puedes definir los datos a enviar. El cuerpo puede ser:
- Datos JSON introducidos directamente en el bloque
- Datos conectados desde la salida de otro bloque
- Generados dinámicamente durante la ejecución del flujo de trabajo
### Acceso a los resultados
Después de completar una solicitud API, puedes acceder a sus salidas:
- **`<api.data>`**: Los datos del cuerpo de respuesta de la API
- **`<api.status>`**: Código de estado HTTP (200, 404, 500, etc.)
- **`<api.headers>`**: Cabeceras de respuesta del servidor
- **`<api.error>`**: Detalles del error si la solicitud falló
## Funciones avanzadas
### Construcción dinámica de URL
Construye URLs dinámicamente usando variables de bloques anteriores:
```javascript
// In a Function block before the API
const userId = <start.userId>;
const apiUrl = `https://api.example.com/users/${userId}/profile`;
```
### Reintentos de solicitud
El bloque API gestiona automáticamente:
- Tiempos de espera de red con retroceso exponencial
- Respuestas de límite de velocidad (códigos de estado 429)
- Errores del servidor (códigos de estado 5xx) con lógica de reintento
- Fallos de conexión con intentos de reconexión
### Validación de respuesta
Valida las respuestas de la API antes de procesarlas:
```javascript
// In a Function block after the API
if (<api.status> === 200) {
const data = <api.data>;
// Process successful response
} else {
// Handle error response
console.error(`API Error: ${<api.status>}`);
}
```
## Entradas y salidas
<Tabs items={['Configuration', 'Variables', 'Results']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>URL</strong>: El endpoint al que enviar la solicitud
</li>
<li>
<strong>Method</strong>: Método HTTP (GET, POST, PUT, DELETE, PATCH)
</li>
<li>
<strong>Query Parameters</strong>: Pares clave-valor para parámetros de URL
</li>
<li>
<strong>Headers</strong>: Cabeceras HTTP para autenticación y tipo de contenido
</li>
<li>
<strong>Body</strong>: Carga de solicitud para métodos POST/PUT/PATCH
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>api.data</strong>: Datos del cuerpo de respuesta de la llamada API
</li>
<li>
<strong>api.status</strong>: Código de estado HTTP devuelto por el servidor
</li>
<li>
<strong>api.headers</strong>: Cabeceras de respuesta del servidor
</li>
<li>
<strong>api.error</strong>: Detalles del error si la solicitud falló
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Response Data</strong>: Contenido principal de respuesta de la API
</li>
<li>
<strong>Status Information</strong>: Estado HTTP y detalles de error
</li>
<li>
<strong>Access</strong>: Disponible en bloques después de la llamada API
</li>
</ul>
</Tab>
</Tabs>
## Ejemplos de casos de uso
### Obtener datos de perfil de usuario
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Recuperar información de usuario desde un servicio externo</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de función construye el ID de usuario desde la entrada</li>
<li>El bloque API llama al endpoint GET /users/&#123;id&#125;</li>
<li>El bloque de función procesa y formatea los datos del usuario</li>
<li>El bloque de respuesta devuelve el perfil formateado</li>
</ol>
</div>
### Procesamiento de pagos
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Procesar pago a través de la API de Stripe</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de función valida los datos de pago</li>
<li>El bloque API crea la intención de pago a través de Stripe</li>
<li>El bloque de condición gestiona el éxito/fracaso del pago</li>
<li>El bloque Supabase actualiza el estado del pedido en la base de datos</li>
</ol>
</div>
## Mejores prácticas
- **Usa variables de entorno para datos sensibles**: No codifiques directamente claves API o credenciales
- **Maneja los errores con elegancia**: Conecta lógica de manejo de errores para solicitudes fallidas
- **Valida las respuestas**: Comprueba los códigos de estado y formatos de respuesta antes de procesar datos
- **Respeta los límites de tasa**: Ten en cuenta los límites de tasa de la API e implementa la limitación apropiada

View File

@@ -1,242 +0,0 @@
---
title: Condición
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
import { Image } from '@/components/ui/image'
El bloque de Condición te permite ramificar la ruta de ejecución de tu flujo de trabajo basándose en expresiones booleanas, permitiéndote crear flujos de trabajo dinámicos y receptivos con diferentes rutas de ejecución. Evalúa condiciones y dirige el flujo de trabajo en consecuencia, permitiéndote controlar el flujo de ejecución basado en datos o lógica sin requerir un LLM.
<div className="flex justify-center">
<Image
src="/static/blocks/condition.png"
alt="Bloque de Condición"
width={500}
height={350}
className="my-6"
/>
</div>
<Callout>
Los bloques de Condición permiten una toma de decisiones determinista sin requerir un LLM, haciéndolos ideales
para lógica de ramificación sencilla.
</Callout>
## Descripción general
El bloque de Condición te permite:
<Steps>
<Step>
<strong>Crear lógica de ramificación</strong>: dirigir flujos de trabajo basados en expresiones booleanas
</Step>
<Step>
<strong>Tomar decisiones basadas en datos</strong>: evaluar condiciones usando salidas de bloques anteriores
</Step>
<Step>
<strong>Manejar múltiples escenarios</strong>: definir múltiples condiciones con diferentes rutas
</Step>
<Step>
<strong>Proporcionar enrutamiento determinista</strong>: tomar decisiones sin requerir un LLM
</Step>
</Steps>
## Cómo funciona
El bloque de Condición opera a través de un proceso de evaluación secuencial:
1. **Evaluar expresión** - Procesa la expresión booleana de JavaScript/TypeScript usando los datos actuales del flujo de trabajo
2. **Determinar resultado** - Devuelve verdadero o falso basado en la evaluación de la expresión
3. **Dirigir flujo de trabajo** - Dirige la ejecución al bloque de destino apropiado basado en el resultado
4. **Proporcionar contexto** - Genera metadatos sobre la decisión para depuración y monitoreo
## Opciones de configuración
### Condiciones
Define una o más condiciones que serán evaluadas. Cada condición incluye:
- **Expresión**: una expresión JavaScript/TypeScript que evalúa a verdadero o falso
- **Ruta**: el bloque de destino al que dirigir si la condición es verdadera
- **Descripción**: explicación opcional de lo que comprueba la condición
Puedes crear múltiples condiciones que se evalúan en orden, donde la primera condición que coincida determina la ruta de ejecución.
### Formato de expresión de condición
Las condiciones utilizan sintaxis JavaScript y pueden hacer referencia a valores de entrada de bloques anteriores.
<Tabs items={['Umbral de puntuación', 'Análisis de texto', 'Múltiples condiciones']}>
<Tab>
```javascript
// Check if a score is above a threshold
<agent.score> > 75
```
</Tab>
<Tab>
```javascript
// Check if a text contains specific keywords
<agent.text>.includes('urgent') || <agent.text>.includes('emergency')
```
</Tab>
<Tab>
```javascript
// Check multiple conditions
<agent.age> >= 18 && <agent.country> === 'US'
```
</Tab>
</Tabs>
### Acceso a resultados
Después de evaluar una condición, puedes acceder a sus salidas:
- **`<condition.result>`**: Resultado booleano de la evaluación de la condición
- **`<condition.matched_condition>`**: ID de la condición que coincidió
- **`<condition.content>`**: Descripción del resultado de la evaluación
- **`<condition.path>`**: Detalles del destino de enrutamiento elegido
## Funciones avanzadas
### Expresiones complejas
Usa operadores y funciones de JavaScript en las condiciones:
```javascript
// String operations
<user.email>.endsWith('@company.com')
// Array operations
<api.tags>.includes('urgent')
// Mathematical operations
<agent.confidence> * 100 > 85
// Date comparisons
new Date(<api.created_at>) > new Date('2024-01-01')
```
### Evaluación de múltiples condiciones
Las condiciones se evalúan en orden hasta que una coincida:
```javascript
// Condition 1: Check for high priority
<ticket.priority> === 'high'
// Condition 2: Check for urgent keywords
<ticket.subject>.toLowerCase().includes('urgent')
// Condition 3: Default fallback
true
```
### Manejo de errores
Las condiciones manejan automáticamente:
- Valores indefinidos o nulos con evaluación segura
- Incompatibilidades de tipo con alternativas apropiadas
- Expresiones inválidas con registro de errores
- Variables faltantes con valores predeterminados
## Entradas y salidas
<Tabs items={['Configuración', 'Variables', 'Resultados']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Condiciones</strong>: Array de expresiones booleanas para evaluar
</li>
<li>
<strong>Expresiones</strong>: Condiciones JavaScript/TypeScript usando salidas de bloques
</li>
<li>
<strong>Rutas de enrutamiento</strong>: Bloques de destino para cada resultado de condición
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>condition.result</strong>: Resultado booleano de la evaluación de condición
</li>
<li>
<strong>condition.matched_condition</strong>: ID de la condición coincidente
</li>
<li>
<strong>condition.content</strong>: Descripción del resultado de evaluación
</li>
<li>
<strong>condition.path</strong>: Detalles del destino de enrutamiento elegido
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Resultado booleano</strong>: Resultado principal de la evaluación de condición
</li>
<li>
<strong>Información de enrutamiento</strong>: Selección de ruta y detalles de condición
</li>
<li>
<strong>Acceso</strong>: Disponible en bloques después de la condición
</li>
</ul>
</Tab>
</Tabs>
## Ejemplos de casos de uso
### Enrutamiento de atención al cliente
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Enrutar tickets de soporte según la prioridad</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque API obtiene datos de tickets de soporte</li>
<li>La condición verifica si `<api.priority>` es igual a 'high'</li>
<li>Tickets de alta prioridad → Agente con herramientas de escalación</li>
<li>Tickets de prioridad normal → Agente de soporte estándar</li>
</ol>
</div>
### Moderación de contenido
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Filtrar contenido basado en resultados de análisis</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El agente analiza contenido generado por usuarios</li>
<li>La condición verifica si `<agent.toxicity_score>` > 0.7</li>
<li>Contenido tóxico → Flujo de moderación</li>
<li>Contenido limpio → Flujo de publicación</li>
</ol>
</div>
### Flujo de incorporación de usuarios
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Personalizar la incorporación según el tipo de usuario</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de función procesa datos de registro de usuarios</li>
<li>La condición verifica si `<user.account_type>` === 'enterprise'</li>
<li>Usuarios empresariales → Flujo de configuración avanzada</li>
<li>Usuarios individuales → Flujo de incorporación simple</li>
</ol>
</div>
## Mejores prácticas
- **Ordenar las condiciones correctamente**: Coloca las condiciones más específicas antes que las generales para asegurar que la lógica específica tenga prioridad sobre las alternativas
- **Incluir una condición predeterminada**: Añade una condición general (`true`) como última condición para manejar casos no coincidentes y evitar que la ejecución del flujo de trabajo se quede atascada
- **Mantener las expresiones simples**: Usa expresiones booleanas claras y directas para mejorar la legibilidad y facilitar la depuración
- **Documentar tus condiciones**: Añade descripciones para explicar el propósito de cada condición para una mejor colaboración en equipo y mantenimiento
- **Probar casos límite**: Verifica que las condiciones manejen correctamente los valores límite probando con valores en los extremos de los rangos de tus condiciones

View File

@@ -1,199 +0,0 @@
---
title: Evaluador
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
El bloque Evaluador utiliza IA para puntuar y evaluar la calidad del contenido mediante métricas de evaluación personalizables que tú defines. Perfecto para control de calidad, pruebas A/B y para garantizar que tus resultados de IA cumplan con estándares específicos.
<div className="flex justify-center">
<Image
src="/static/blocks/evaluator.png"
alt="Configuración del bloque Evaluador"
width={500}
height={400}
className="my-6"
/>
</div>
## Descripción general
El bloque Evaluador te permite:
<Steps>
<Step>
<strong>Puntuar la calidad del contenido</strong>: Usa IA para evaluar contenido según métricas personalizadas con puntuaciones numéricas
</Step>
<Step>
<strong>Definir métricas personalizadas</strong>: Crea criterios de evaluación específicos adaptados a tu caso de uso
</Step>
<Step>
<strong>Automatizar el control de calidad</strong>: Construye flujos de trabajo que evalúan y filtran contenido automáticamente
</Step>
<Step>
<strong>Seguir el rendimiento</strong>: Monitoriza mejoras y consistencia a lo largo del tiempo con puntuaciones objetivas
</Step>
</Steps>
## Cómo funciona
El bloque Evaluador procesa contenido mediante evaluación impulsada por IA:
1. **Recibe contenido** - Toma el contenido de entrada de bloques previos en tu flujo de trabajo
2. **Aplica métricas** - Evalúa el contenido según tus métricas personalizadas definidas
3. **Genera puntuaciones** - El modelo de IA asigna puntuaciones numéricas para cada métrica
4. **Proporciona resumen** - Devuelve una evaluación detallada con puntuaciones y explicaciones
## Opciones de configuración
### Métricas de evaluación
Define métricas personalizadas para evaluar el contenido. Cada métrica incluye:
- **Nombre**: Un identificador corto para la métrica
- **Descripción**: Una explicación detallada de lo que mide la métrica
- **Rango**: El rango numérico para la puntuación (p. ej., 1-5, 0-10)
Ejemplos de métricas:
```
Accuracy (1-5): How factually accurate is the content?
Clarity (1-5): How clear and understandable is the content?
Relevance (1-5): How relevant is the content to the original query?
```
### Contenido
El contenido a evaluar. Esto puede ser:
- Proporcionado directamente en la configuración del bloque
- Conectado desde la salida de otro bloque (típicamente un bloque de Agente)
- Generado dinámicamente durante la ejecución del flujo de trabajo
### Selección de modelo
Elige un modelo de IA para realizar la evaluación:
**OpenAI**: GPT-4o, o1, o3, o4-mini, gpt-4.1
**Anthropic**: Claude 3.7 Sonnet
**Google**: Gemini 2.5 Pro, Gemini 2.0 Flash
**Otros proveedores**: Groq, Cerebras, xAI, DeepSeek
**Modelos locales**: Cualquier modelo ejecutándose en Ollama
<div className="w-full max-w-2xl mx-auto overflow-hidden rounded-lg">
<Video src="models.mp4" width={500} height={350} />
</div>
**Recomendación**: Utiliza modelos con fuertes capacidades de razonamiento como GPT-4o o Claude 3.7 Sonnet para evaluaciones más precisas.
### Clave API
Tu clave API para el proveedor de LLM seleccionado. Esta se almacena de forma segura y se utiliza para la autenticación.
## Cómo funciona
1. El bloque Evaluador toma el contenido proporcionado y tus métricas personalizadas
2. Genera un prompt especializado que instruye al LLM para evaluar el contenido
3. El prompt incluye directrices claras sobre cómo puntuar cada métrica
4. El LLM evalúa el contenido y devuelve puntuaciones numéricas para cada métrica
5. El bloque Evaluador formatea estas puntuaciones como salida estructurada para su uso en tu flujo de trabajo
## Ejemplos de casos de uso
### Evaluación de calidad de contenido
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Evaluar la calidad de un artículo de blog antes de su publicación</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de Agente genera el contenido del artículo</li>
<li>El Evaluador evalúa la precisión, legibilidad y engagement</li>
<li>El bloque de Condición verifica si las puntuaciones cumplen con los umbrales mínimos</li>
<li>Puntuaciones altas → Publicar, Puntuaciones bajas → Revisar y reintentar</li>
</ol>
</div>
### Pruebas A/B de contenido
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Comparar múltiples respuestas generadas por IA</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque paralelo genera múltiples variaciones de respuesta</li>
<li>El evaluador puntúa cada variación según claridad y relevancia</li>
<li>El bloque de función selecciona la respuesta con mayor puntuación</li>
<li>El bloque de respuesta devuelve el mejor resultado</li>
</ol>
</div>
### Control de calidad de atención al cliente
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Asegurar que las respuestas de soporte cumplan con los estándares de calidad</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El agente de soporte genera una respuesta a la consulta del cliente</li>
<li>El evaluador puntúa la utilidad, empatía y precisión</li>
<li>Las puntuaciones se registran para entrenamiento y monitoreo de rendimiento</li>
<li>Las puntuaciones bajas activan un proceso de revisión humana</li>
</ol>
</div>
## Entradas y salidas
<Tabs items={['Configuración', 'Variables', 'Resultados']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Contenido</strong>: El texto o datos estructurados a evaluar
</li>
<li>
<strong>Métricas de evaluación</strong>: Criterios personalizados con rangos de puntuación
</li>
<li>
<strong>Modelo</strong>: Modelo de IA para análisis de evaluación
</li>
<li>
<strong>Clave API</strong>: Autenticación para el proveedor de LLM seleccionado
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>evaluator.content</strong>: Resumen de la evaluación
</li>
<li>
<strong>evaluator.model</strong>: Modelo utilizado para la evaluación
</li>
<li>
<strong>evaluator.tokens</strong>: Estadísticas de uso de tokens
</li>
<li>
<strong>evaluator.cost</strong>: Resumen de costos para la llamada de evaluación
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Puntuaciones de métricas</strong>: Puntuaciones numéricas para cada métrica definida
</li>
<li>
<strong>Resumen de evaluación</strong>: Evaluación detallada con explicaciones
</li>
<li>
<strong>Acceso</strong>: Disponible en bloques después del evaluador
</li>
</ul>
</Tab>
</Tabs>
## Mejores prácticas
- **Usar descripciones específicas de métricas**: Define claramente qué mide cada métrica para obtener evaluaciones más precisas
- **Elegir rangos apropiados**: Selecciona rangos de puntuación que proporcionen suficiente detalle sin ser excesivamente complejos
- **Conectar con bloques de agente**: Utiliza bloques evaluadores para evaluar las salidas de bloques de agente y crear bucles de retroalimentación
- **Usar métricas consistentes**: Para análisis comparativos, mantén métricas consistentes en evaluaciones similares
- **Combinar múltiples métricas**: Usa varias métricas para obtener una evaluación integral

View File

@@ -1,156 +0,0 @@
---
title: Función
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
El bloque Función te permite ejecutar código JavaScript o TypeScript personalizado en tus flujos de trabajo. Úsalo para transformar datos, realizar cálculos o implementar lógica personalizada que no está disponible en otros bloques.
<div className="flex justify-center">
<Image
src="/static/blocks/function.png"
alt="Bloque de función con editor de código"
width={500}
height={350}
className="my-6"
/>
</div>
## Descripción general
El bloque Función te permite:
<Steps>
<Step>
<strong>Transformar datos</strong>: Convertir formatos, analizar texto, manipular arrays y objetos
</Step>
<Step>
<strong>Realizar cálculos</strong>: Operaciones matemáticas, estadísticas, cálculos financieros
</Step>
<Step>
<strong>Implementar lógica personalizada</strong>: Condicionales complejos, bucles y algoritmos
</Step>
<Step>
<strong>Procesar datos externos</strong>: Analizar respuestas, formatear solicitudes, gestionar autenticación
</Step>
</Steps>
## Cómo funciona
El bloque Función ejecuta tu código en un entorno seguro y aislado:
1. **Recibir entrada**: Accede a los datos de bloques anteriores a través del objeto `input`
2. **Ejecutar código**: Ejecuta tu código JavaScript/Python
3. **Devolver resultados**: Usa `return` para pasar datos al siguiente bloque
4. **Manejar errores**: Gestión de errores y registro integrados
## Ejecución remota (E2B)
- **Lenguajes**: Ejecuta JavaScript y Python en un sandbox E2B aislado.
- **Cómo activarlo**: Activa “Ejecución de código remoto” en el bloque Función.
- **Cuándo usarlo**: Lógica más pesada, bibliotecas externas o código específico de Python.
- **Rendimiento**: Más lento que JS local debido al inicio del sandbox y la sobrecarga de red.
- **Notas**: Requiere `E2B_API_KEY` si se ejecuta localmente. Para la menor latencia, usa JS nativo local (Modo rápido).
## Entradas y salidas
<Tabs items={['Configuration', 'Variables']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Código</strong>: Tu código JavaScript/Python para ejecutar
</li>
<li>
<strong>Tiempo de espera</strong>: Tiempo máximo de ejecución (por defecto 30 segundos)
</li>
<li>
<strong>Datos de entrada</strong>: Todas las salidas de bloques conectados disponibles a través de variables
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>function.result</strong>: El valor devuelto por tu función
</li>
<li>
<strong>function.stdout</strong>: Salida de console.log() de tu código
</li>
</ul>
</Tab>
</Tabs>
## Casos de uso de ejemplo
### Pipeline de procesamiento de datos
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Transformar respuesta de API en datos estructurados</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de API obtiene datos brutos del cliente</li>
<li>El bloque de función procesa y valida los datos</li>
<li>El bloque de función calcula métricas derivadas</li>
<li>El bloque de respuesta devuelve resultados formateados</li>
</ol>
</div>
### Implementación de lógica de negocio
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Calcular puntuaciones y niveles de fidelidad</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El agente recupera el historial de compras del cliente</li>
<li>El bloque de función calcula métricas de fidelidad</li>
<li>El bloque de función determina el nivel del cliente</li>
<li>El bloque de condición enruta según el nivel</li>
</ol>
</div>
### Validación y limpieza de datos
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Validar y limpiar la entrada del usuario</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Entrada del usuario recibida desde el envío del formulario</li>
<li>El bloque de función valida el formato de correo electrónico y números de teléfono</li>
<li>El bloque de función limpia y normaliza los datos</li>
<li>El bloque de API guarda los datos validados en la base de datos</li>
</ol>
</div>
### Ejemplo: Calculadora de puntuación de fidelidad
```javascript title="loyalty-calculator.js"
// Process customer data and calculate loyalty score
const { purchaseHistory, accountAge, supportTickets } = <agent>;
// Calculate metrics
const totalSpent = purchaseHistory.reduce((sum, purchase) => sum + purchase.amount, 0);
const purchaseFrequency = purchaseHistory.length / (accountAge / 365);
const ticketRatio = supportTickets.resolved / supportTickets.total;
// Calculate loyalty score (0-100)
const spendScore = Math.min(totalSpent / 1000 * 30, 30);
const frequencyScore = Math.min(purchaseFrequency * 20, 40);
const supportScore = ticketRatio * 30;
const loyaltyScore = Math.round(spendScore + frequencyScore + supportScore);
return {
customer: <agent.name>,
loyaltyScore,
loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
metrics: { spendScore, frequencyScore, supportScore }
};
```
## Mejores prácticas
- **Mantén las funciones enfocadas**: Escribe funciones que hagan una sola cosa bien para mejorar la mantenibilidad y la depuración
- **Maneja los errores con elegancia**: Usa bloques try/catch para manejar posibles errores y proporcionar mensajes de error significativos
- **Prueba casos extremos**: Asegúrate de que tu código maneje correctamente entradas inusuales, valores nulos y condiciones límite
- **Optimiza el rendimiento**: Ten en cuenta la complejidad computacional y el uso de memoria para grandes conjuntos de datos
- **Usa console.log() para depuración**: Aprovecha la salida stdout para depurar y monitorear la ejecución de funciones

View File

@@ -1,129 +0,0 @@
---
title: Bloques
description: Los componentes de construcción de tus flujos de trabajo de IA
---
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Video } from '@/components/ui/video'
Los bloques son los componentes de construcción que conectas para crear flujos de trabajo de IA. Piensa en ellos como módulos especializados que manejan tareas específicas—desde chatear con modelos de IA hasta realizar llamadas API o procesar datos.
<div className="w-full max-w-2xl mx-auto overflow-hidden rounded-lg">
<Video src="connections.mp4" width={700} height={450} />
</div>
## Tipos de bloques principales
Sim proporciona siete tipos de bloques principales que manejan las funciones esenciales de los flujos de trabajo de IA:
### Bloques de procesamiento
- **[Agente](/blocks/agent)** - Chatea con modelos de IA (OpenAI, Anthropic, Google, modelos locales)
- **[Función](/blocks/function)** - Ejecuta código personalizado de JavaScript/TypeScript
- **[API](/blocks/api)** - Conecta con servicios externos mediante peticiones HTTP
### Bloques lógicos
- **[Condición](/blocks/condition)** - Ramifica caminos de flujo de trabajo basados en expresiones booleanas
- **[Enrutador](/blocks/router)** - Usa IA para dirigir inteligentemente las solicitudes a diferentes caminos
- **[Evaluador](/blocks/evaluator)** - Puntúa y evalúa la calidad del contenido usando IA
### Bloques de salida
- **[Respuesta](/blocks/response)** - Formatea y devuelve resultados finales de tu flujo de trabajo
## Cómo funcionan los bloques
Cada bloque tiene tres componentes principales:
**Entradas**: Datos que llegan al bloque desde otros bloques o entrada del usuario
**Configuración**: Ajustes que controlan cómo se comporta el bloque
**Salidas**: Datos que el bloque produce para que otros bloques los utilicen
<Steps>
<Step>
<strong>Recibir entrada</strong>: El bloque recibe datos de bloques conectados o entrada del usuario
</Step>
<Step>
<strong>Procesar</strong>: El bloque procesa la entrada según su configuración
</Step>
<Step>
<strong>Resultados de salida</strong>: El bloque produce datos de salida para los siguientes bloques en el flujo de trabajo
</Step>
</Steps>
## Conectando bloques
Creas flujos de trabajo conectando bloques entre sí. La salida de un bloque se convierte en la entrada de otro:
- **Arrastra para conectar**: Arrastra desde un puerto de salida a un puerto de entrada
- **Conexiones múltiples**: Una salida puede conectarse a múltiples entradas
- **Rutas ramificadas**: Algunos bloques pueden dirigir a diferentes rutas según las condiciones
<div className="w-full max-w-2xl mx-auto overflow-hidden rounded-lg">
<Video src="connections.mp4" width={700} height={450} />
</div>
## Patrones comunes
### Procesamiento secuencial
Conecta bloques en cadena donde cada bloque procesa la salida del anterior:
```
User Input → Agent → Function → Response
```
### Ramificación condicional
Utiliza bloques de Condición o Enrutador para crear diferentes rutas:
```
User Input → Router → Agent A (for questions)
→ Agent B (for commands)
```
### Control de calidad
Utiliza bloques Evaluadores para evaluar y filtrar salidas:
```
Agent → Evaluator → Condition → Response (if good)
→ Agent (retry if bad)
```
## Configuración de bloques
Cada tipo de bloque tiene opciones de configuración específicas:
**Todos los bloques**:
- Conexiones de entrada/salida
- Comportamiento de manejo de errores
- Configuración de tiempo de espera de ejecución
**Bloques de IA** (Agente, Enrutador, Evaluador):
- Selección de modelo (OpenAI, Anthropic, Google, local)
- Claves API y autenticación
- Temperatura y otros parámetros del modelo
- Instrucciones y prompts del sistema
**Bloques lógicos** (Condición, Función):
- Expresiones o código personalizado
- Referencias de variables
- Configuración del entorno de ejecución
**Bloques de integración** (API, Respuesta):
- Configuración de endpoint
- Cabeceras y autenticación
- Formato de solicitud/respuesta
<Cards>
<Card title="Bloque de agente" href="/blocks/agent">
Conéctate a modelos de IA y crea respuestas inteligentes
</Card>
<Card title="Bloque de función" href="/blocks/function">
Ejecuta código personalizado para procesar y transformar datos
</Card>
<Card title="Bloque de API" href="/blocks/api">
Intégrate con servicios externos y APIs
</Card>
<Card title="Bloque de condición" href="/blocks/condition">
Crea lógica de ramificación basada en evaluación de datos
</Card>
</Cards>

View File

@@ -1,211 +0,0 @@
---
title: Loop
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
El bloque Loop es un bloque contenedor en Sim que permite crear flujos de trabajo iterativos ejecutando un grupo de bloques repetidamente. Los bucles permiten el procesamiento iterativo en tus flujos de trabajo.
El bloque Loop admite dos tipos de iteración:
<Callout type="info">
Los bloques Loop son nodos contenedores que pueden albergar otros bloques dentro de ellos. Los bloques dentro de un bucle se ejecutarán múltiples veces según tu configuración.
</Callout>
## Descripción general
El bloque Loop te permite:
<Steps>
<Step>
<strong>Iterar sobre colecciones</strong>: Procesar arrays u objetos un elemento a la vez
</Step>
<Step>
<strong>Repetir operaciones</strong>: Ejecutar bloques un número fijo de veces
</Step>
<Step>
<strong>Procesamiento secuencial</strong>: Manejar transformación de datos en iteraciones ordenadas
</Step>
<Step>
<strong>Agregar resultados</strong>: Recopilar salidas de todas las iteraciones del bucle
</Step>
</Steps>
## Cómo funciona
El bloque Loop ejecuta los bloques contenidos a través de iteración secuencial:
1. **Inicializar bucle** - Configurar parámetros de iteración (contador o colección)
2. **Ejecutar iteración** - Ejecutar bloques contenidos para la iteración actual
3. **Recopilar resultados** - Almacenar la salida de cada iteración
4. **Continuar o completar** - Pasar a la siguiente iteración o finalizar el bucle
## Opciones de configuración
### Tipo de bucle
Elige entre dos tipos de bucles:
<Tabs items={['For Loop', 'ForEach Loop']}>
<Tab>
**For Loop (Iteraciones)** - Un bucle numérico que se ejecuta un número fijo de veces:
<div className="flex justify-center">
<Image
src="/static/blocks/loop-1.png"
alt="Bucle For con iteraciones"
width={500}
height={400}
className="my-6"
/>
</div>
Úsalo cuando necesites repetir una operación un número específico de veces.
```
Example: Run 5 times
- Iteration 1
- Iteration 2
- Iteration 3
- Iteration 4
- Iteration 5
```
</Tab>
<Tab>
**Bucle ForEach (Colección)** - Un bucle basado en colecciones que itera sobre cada elemento en un array u objeto:
<div className="flex justify-center">
<Image
src="/static/blocks/loop-2.png"
alt="Bucle ForEach con colección"
width={500}
height={400}
className="my-6"
/>
</div>
Úsalo cuando necesites procesar una colección de elementos.
```
Example: Process ["apple", "banana", "orange"]
- Iteration 1: Process "apple"
- Iteration 2: Process "banana"
- Iteration 3: Process "orange"
```
</Tab>
</Tabs>
## Cómo usar los bucles
### Creación de un bucle
1. Arrastra un bloque de bucle desde la barra de herramientas a tu lienzo
2. Configura el tipo de bucle y los parámetros
3. Arrastra otros bloques dentro del contenedor del bucle
4. Conecta los bloques según sea necesario
### Acceso a los resultados
Después de que un bucle se completa, puedes acceder a los resultados agregados:
- **`<loop.results>`**: Array de resultados de todas las iteraciones del bucle
## Ejemplos de casos de uso
### Procesamiento de resultados de API
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Procesar múltiples registros de clientes</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque API obtiene la lista de clientes</li>
<li>El bucle ForEach itera sobre cada cliente</li>
<li>Dentro del bucle: El agente analiza los datos del cliente</li>
<li>Dentro del bucle: La función almacena los resultados del análisis</li>
</ol>
</div>
### Generación iterativa de contenido
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Generar múltiples variaciones</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Configurar el bucle For para 5 iteraciones</li>
<li>Dentro del bucle: El agente genera una variación de contenido</li>
<li>Dentro del bucle: El evaluador puntúa el contenido</li>
<li>Después del bucle: La función selecciona la mejor variación</li>
</ol>
</div>
## Características avanzadas
### Limitaciones
<Callout type="warning">
Los bloques contenedores (Bucles y Paralelos) no pueden anidarse unos dentro de otros. Esto significa:
- No puedes colocar un bloque de Bucle dentro de otro bloque de Bucle
- No puedes colocar un bloque Paralelo dentro de un bloque de Bucle
- No puedes colocar ningún bloque contenedor dentro de otro bloque contenedor
Si necesitas iteración multidimensional, considera reestructurar tu flujo de trabajo para usar bucles secuenciales o procesar datos por etapas.
</Callout>
<Callout type="info">
Los bucles se ejecutan secuencialmente, no en paralelo. Si necesitas ejecución concurrente, utiliza el bloque Paralelo en su lugar.
</Callout>
## Entradas y salidas
<Tabs items={['Configuration', 'Variables', 'Results']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Tipo de bucle</strong>: Elige entre 'for' o 'forEach'
</li>
<li>
<strong>Iteraciones</strong>: Número de veces a ejecutar (bucles for)
</li>
<li>
<strong>Colección</strong>: Array u objeto sobre el que iterar (bucles forEach)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>loop.currentItem</strong>: Elemento actual que se está procesando
</li>
<li>
<strong>loop.index</strong>: Número de iteración actual (base 0)
</li>
<li>
<strong>loop.items</strong>: Colección completa (bucles forEach)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>loop.results</strong>: Array con todos los resultados de las iteraciones
</li>
<li>
<strong>Estructura</strong>: Los resultados mantienen el orden de iteración
</li>
<li>
<strong>Acceso</strong>: Disponible en bloques después del bucle
</li>
</ul>
</Tab>
</Tabs>
## Mejores prácticas
- **Establece límites razonables**: Mantén un número razonable de iteraciones para evitar tiempos de ejecución largos
- **Usa ForEach para colecciones**: Cuando proceses arrays u objetos, usa bucles ForEach en lugar de bucles For
- **Maneja los errores con elegancia**: Considera añadir manejo de errores dentro de los bucles para flujos de trabajo robustos

View File

@@ -1,231 +0,0 @@
---
title: Paralelo
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
El bloque Paralelo es un bloque contenedor en Sim que permite ejecutar múltiples instancias de bloques simultáneamente para un procesamiento más rápido del flujo de trabajo.
El bloque Paralelo admite dos tipos de ejecución concurrente:
<Callout type="info">
Los bloques Paralelos son nodos contenedores que ejecutan su contenido múltiples veces simultáneamente, a diferencia de los bucles que ejecutan secuencialmente.
</Callout>
## Descripción general
El bloque Paralelo te permite:
<Steps>
<Step>
<strong>Distribuir trabajo</strong>: Procesar múltiples elementos concurrentemente
</Step>
<Step>
<strong>Acelerar la ejecución</strong>: Ejecutar operaciones independientes simultáneamente
</Step>
<Step>
<strong>Manejar operaciones masivas</strong>: Procesar grandes conjuntos de datos eficientemente
</Step>
<Step>
<strong>Agregar resultados</strong>: Recopilar salidas de todas las ejecuciones paralelas
</Step>
</Steps>
## Opciones de configuración
### Tipo de paralelo
Elige entre dos tipos de ejecución paralela:
<Tabs items={['Count-based', 'Collection-based']}>
<Tab>
**Paralelo basado en conteo** - Ejecuta un número fijo de instancias paralelas:
<div className="flex justify-center">
<Image
src="/static/blocks/parallel-1.png"
alt="Ejecución paralela basada en conteo"
width={500}
height={400}
className="my-6"
/>
</div>
Usa esto cuando necesites ejecutar la misma operación múltiples veces concurrentemente.
```
Example: Run 5 parallel instances
- Instance 1 ┐
- Instance 2 ├─ All execute simultaneously
- Instance 3 │
- Instance 4 │
- Instance 5 ┘
```
</Tab>
<Tab>
**Paralelo basado en colección** - Distribuye una colección entre instancias paralelas:
<div className="flex justify-center">
<Image
src="/static/blocks/parallel-2.png"
alt="Ejecución paralela basada en colección"
width={500}
height={400}
className="my-6"
/>
</div>
Cada instancia procesa un elemento de la colección simultáneamente.
```
Example: Process ["task1", "task2", "task3"] in parallel
- Instance 1: Process "task1" ┐
- Instance 2: Process "task2" ├─ All execute simultaneously
- Instance 3: Process "task3" ┘
```
</Tab>
</Tabs>
## Cómo usar bloques paralelos
### Creación de un bloque paralelo
1. Arrastra un bloque Paralelo desde la barra de herramientas a tu lienzo
2. Configura el tipo de paralelo y los parámetros
3. Arrastra un solo bloque dentro del contenedor paralelo
4. Conecta el bloque según sea necesario
### Acceso a los resultados
Después de que un bloque paralelo se complete, puedes acceder a los resultados agregados:
- **`<parallel.results>`**: Array de resultados de todas las instancias paralelas
## Ejemplos de casos de uso
### Procesamiento de API por lotes
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Procesar múltiples llamadas API simultáneamente</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Bloque paralelo con colección de endpoints API</li>
<li>Dentro del paralelo: El bloque API llama a cada endpoint</li>
<li>Después del paralelo: Procesar todas las respuestas juntas</li>
</ol>
</div>
### Procesamiento de IA con múltiples modelos
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Obtener respuestas de múltiples modelos de IA</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Paralelo basado en colección sobre una lista de IDs de modelos (p. ej., ["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"])</li>
<li>Dentro del paralelo: El modelo del agente se establece al elemento actual de la colección</li>
<li>Después del paralelo: Comparar y seleccionar la mejor respuesta</li>
</ol>
</div>
## Características avanzadas
### Agregación de resultados
Los resultados de todas las instancias paralelas se recopilan automáticamente:
```javascript
// In a Function block after the parallel
const allResults = input.parallel.results;
// Returns: [result1, result2, result3, ...]
```
### Aislamiento de instancias
Cada instancia paralela se ejecuta independientemente:
- Ámbitos de variables separados
- Sin estado compartido entre instancias
- Los fallos en una instancia no afectan a las demás
### Limitaciones
<Callout type="warning">
Los bloques contenedores (Bucles y Paralelos) no pueden anidarse unos dentro de otros. Esto significa:
- No puedes colocar un bloque de Bucle dentro de un bloque Paralelo
- No puedes colocar otro bloque Paralelo dentro de un bloque Paralelo
- No puedes colocar ningún bloque contenedor dentro de otro bloque contenedor
</Callout>
<Callout type="warning">
Los bloques paralelos solo pueden contener un único bloque. No puedes tener múltiples bloques conectados entre sí dentro de un paralelo - en ese caso, solo se ejecutaría el primer bloque.
</Callout>
<Callout type="info">
Aunque la ejecución paralela es más rápida, ten en cuenta:
- Los límites de tasa de las API al realizar solicitudes concurrentes
- El uso de memoria con conjuntos de datos grandes
- Máximo de 20 instancias concurrentes para evitar el agotamiento de recursos
</Callout>
## Paralelo vs Bucle
Entendiendo cuándo usar cada uno:
| Característica | Paralelo | Bucle |
|---------|----------|------|
| Ejecución | Concurrente | Secuencial |
| Velocidad | Más rápido para operaciones independientes | Más lento pero ordenado |
| Orden | Sin orden garantizado | Mantiene el orden |
| Caso de uso | Operaciones independientes | Operaciones dependientes |
| Uso de recursos | Mayor | Menor |
## Entradas y Salidas
<Tabs items={['Configuration', 'Variables', 'Results']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Tipo de paralelo</strong>: Elige entre 'count' o 'collection'
</li>
<li>
<strong>Count</strong>: Número de instancias a ejecutar (basado en conteo)
</li>
<li>
<strong>Collection</strong>: Array u objeto a distribuir (basado en colección)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>parallel.currentItem</strong>: Elemento para esta instancia
</li>
<li>
<strong>parallel.index</strong>: Número de instancia (base 0)
</li>
<li>
<strong>parallel.items</strong>: Colección completa (basado en colección)
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>parallel.results</strong>: Array de todos los resultados de instancias
</li>
<li>
<strong>Access</strong>: Disponible en bloques después del paralelo
</li>
</ul>
</Tab>
</Tabs>
## Mejores prácticas
- **Solo operaciones independientes**: Asegúrate de que las operaciones no dependan entre sí
- **Manejo de límites de tasa**: Añade retrasos o limitaciones para flujos de trabajo con uso intensivo de API
- **Manejo de errores**: Cada instancia debe manejar sus propios errores correctamente

View File

@@ -1,246 +0,0 @@
---
title: Respuesta
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
El bloque de Respuesta es el paso final en tu flujo de trabajo que formatea y envía una respuesta estructurada a las llamadas API. Es como la declaración "return" para todo tu flujo de trabajo—empaqueta los resultados y los envía de vuelta.
<div className="flex justify-center">
<Image
src="/static/blocks/response.png"
alt="Configuración del bloque de respuesta"
width={500}
height={400}
className="my-6"
/>
</div>
<Callout type="info">
Los bloques de respuesta son bloques terminales - finalizan la ejecución del flujo de trabajo y no pueden conectarse a otros bloques.
</Callout>
## Descripción general
El bloque de Respuesta te permite:
<Steps>
<Step>
<strong>Formatear respuestas API</strong>: Estructurar los resultados del flujo de trabajo en respuestas HTTP adecuadas
</Step>
<Step>
<strong>Establecer códigos de estado</strong>: Configurar códigos de estado HTTP apropiados según los resultados del flujo de trabajo
</Step>
<Step>
<strong>Controlar encabezados</strong>: Añadir encabezados personalizados para respuestas API y webhooks
</Step>
<Step>
<strong>Transformar datos</strong>: Convertir variables del flujo de trabajo en formatos de respuesta amigables para el cliente
</Step>
</Steps>
## Cómo funciona
El bloque de Respuesta finaliza la ejecución del flujo de trabajo:
1. **Recopilar datos** - Reúne variables y salidas de bloques anteriores
2. **Formatear respuesta** - Estructura los datos según tu configuración
3. **Establecer detalles HTTP** - Aplica códigos de estado y encabezados
4. **Enviar respuesta** - Devuelve la respuesta formateada al solicitante de la API
## Cuándo necesitas bloques de respuesta
- **Endpoints API**: Cuando tu flujo de trabajo es llamado vía API, los bloques de Respuesta formatean los datos de retorno
- **Webhooks**: Devuelven confirmación o datos al sistema que realiza la llamada
- **Pruebas**: Ver resultados formateados al probar tu flujo de trabajo
## Dos formas de construir respuestas
### Modo constructor (recomendado)
Interfaz visual para construir la estructura de respuesta:
- Arrastrar y soltar campos
- Referenciar variables de flujo de trabajo fácilmente
- Vista previa visual de la estructura de respuesta
### Modo editor (avanzado)
Escribir JSON directamente:
- Control total sobre el formato de respuesta
- Soporte para estructuras anidadas complejas
- Usar sintaxis `<variable.name>` para valores dinámicos
## Opciones de configuración
### Datos de respuesta
Los datos de respuesta son el contenido principal que se enviará de vuelta al solicitante de la API. Deben estar formateados como JSON y pueden incluir:
- Valores estáticos
- Referencias dinámicas a variables de flujo de trabajo usando la sintaxis `<variable.name>`
- Objetos y matrices anidados
- Cualquier estructura JSON válida
### Código de estado
Establece el código de estado HTTP para la respuesta. Los códigos de estado comunes incluyen:
<Tabs items={['Éxito (2xx)', 'Error del cliente (4xx)', 'Error del servidor (5xx)']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li><strong>200</strong>: OK - Respuesta estándar de éxito</li>
<li><strong>201</strong>: Creado - Recurso creado con éxito</li>
<li><strong>204</strong>: Sin contenido - Éxito sin cuerpo de respuesta</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li><strong>400</strong>: Solicitud incorrecta - Parámetros de solicitud inválidos</li>
<li><strong>401</strong>: No autorizado - Se requiere autenticación</li>
<li><strong>404</strong>: No encontrado - El recurso no existe</li>
<li><strong>422</strong>: Entidad no procesable - Errores de validación</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li><strong>500</strong>: Error interno del servidor - Error del lado del servidor</li>
<li><strong>502</strong>: Puerta de enlace incorrecta - Error de servicio externo</li>
<li><strong>503</strong>: Servicio no disponible - Servicio temporalmente inactivo</li>
</ul>
</Tab>
</Tabs>
<div className="mt-4 text-sm text-gray-600 dark:text-gray-400">
El código de estado predeterminado es 200 si no se especifica.
</div>
### Cabeceras de respuesta
Configura cabeceras HTTP adicionales para incluir en la respuesta.
Los encabezados se configuran como pares clave-valor:
| Clave | Valor |
|-----|-------|
| Content-Type | application/json |
| Cache-Control | no-cache |
| X-API-Version | 1.0 |
## Ejemplos de casos de uso
### Respuesta del punto final de la API
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Devolver datos estructurados desde una API de búsqueda</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El flujo de trabajo procesa la consulta de búsqueda y recupera resultados</li>
<li>El bloque de función formatea y pagina los resultados</li>
<li>El bloque de respuesta devuelve JSON con datos, paginación y metadatos</li>
<li>El cliente recibe una respuesta estructurada con estado 200</li>
</ol>
</div>
### Confirmación de webhook
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Confirmar recepción y procesamiento del webhook</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El disparador de webhook recibe datos del sistema externo</li>
<li>El flujo de trabajo procesa los datos entrantes</li>
<li>El bloque de respuesta devuelve una confirmación con el estado del procesamiento</li>
<li>El sistema externo recibe la confirmación</li>
</ol>
</div>
### Manejo de respuestas de error
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Devolver respuestas de error apropiadas</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de condición detecta fallos de validación o errores del sistema</li>
<li>El enrutador dirige hacia la ruta de manejo de errores</li>
<li>El bloque de respuesta devuelve estado 400/500 con detalles del error</li>
<li>El cliente recibe información estructurada del error</li>
</ol>
</div>
## Entradas y salidas
<Tabs items={['Configuration', 'Variables', 'Results']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Datos de respuesta</strong>: Estructura JSON para el cuerpo de la respuesta
</li>
<li>
<strong>Código de estado</strong>: Código de estado HTTP (predeterminado: 200)
</li>
<li>
<strong>Encabezados</strong>: Encabezados HTTP personalizados como pares clave-valor
</li>
<li>
<strong>Modo</strong>: Modo Constructor o Editor para la construcción de respuestas
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>response.data</strong>: El cuerpo de respuesta estructurado
</li>
<li>
<strong>response.status</strong>: Código de estado HTTP enviado
</li>
<li>
<strong>response.headers</strong>: Encabezados incluidos en la respuesta
</li>
<li>
<strong>response.success</strong>: Booleano que indica finalización exitosa
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Respuesta HTTP</strong>: Respuesta completa enviada al solicitante de la API
</li>
<li>
<strong>Terminación del flujo de trabajo</strong>: Finaliza la ejecución del flujo de trabajo
</li>
<li>
<strong>Acceso</strong>: Los bloques de respuesta son terminales - no hay bloques subsiguientes
</li>
</ul>
</Tab>
</Tabs>
## Referencias de variables
Utiliza la sintaxis `<variable.name>` para insertar dinámicamente variables del flujo de trabajo en tu respuesta:
```json
{
"user": {
"id": "<variable.userId>",
"name": "<variable.userName>",
"email": "<variable.userEmail>"
},
"query": "<variable.searchQuery>",
"results": "<variable.searchResults>",
"totalFound": "<variable.resultCount>",
"processingTime": "<variable.executionTime>ms"
}
```
<Callout type="warning">
Los nombres de variables distinguen entre mayúsculas y minúsculas y deben coincidir exactamente con las variables disponibles en tu flujo de trabajo.
</Callout>
## Mejores prácticas
- **Usa códigos de estado significativos**: Elige códigos de estado HTTP apropiados que reflejen con precisión el resultado del flujo de trabajo
- **Estructura tus respuestas de manera consistente**: Mantén una estructura JSON consistente en todos tus endpoints de API para una mejor experiencia del desarrollador
- **Incluye metadatos relevantes**: Añade marcas de tiempo e información de versión para ayudar con la depuración y el monitoreo
- **Maneja los errores con elegancia**: Utiliza lógica condicional en tu flujo de trabajo para establecer respuestas de error apropiadas con mensajes descriptivos
- **Valida las referencias de variables**: Asegúrate de que todas las variables referenciadas existan y contengan los tipos de datos esperados antes de que se ejecute el bloque de Respuesta

View File

@@ -1,225 +0,0 @@
---
title: Router
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
El bloque Router utiliza IA para decidir de manera inteligente qué camino debe tomar tu flujo de trabajo a continuación, dirigiendo la ejecución del flujo de trabajo según condiciones o lógica específicas. A diferencia de los bloques de Condición que utilizan reglas simples, los bloques Router pueden entender el contexto y tomar decisiones inteligentes de enrutamiento basadas en el análisis de contenido.
<div className="flex justify-center">
<Image
src="/static/blocks/router.png"
alt="Bloque Router con múltiples caminos"
width={500}
height={400}
className="my-6"
/>
</div>
## Descripción general
El bloque Router te permite:
<Steps>
<Step>
<strong>Enrutamiento inteligente de contenido</strong>: Usa IA para entender la intención y el contexto
</Step>
<Step>
<strong>Selección dinámica de rutas</strong>: Dirige flujos de trabajo basados en análisis de contenido no estructurado
</Step>
<Step>
<strong>Decisiones conscientes del contexto</strong>: Toma decisiones inteligentes de enrutamiento más allá de reglas simples
</Step>
<Step>
<strong>Gestión de múltiples rutas</strong>: Maneja flujos de trabajo complejos con múltiples destinos potenciales
</Step>
</Steps>
## Router vs bloques de Condición
<Accordions>
<Accordion title="Cuándo usar Router">
- Se necesita análisis de contenido impulsado por IA
- Contenido no estructurado o tipos de contenido variables
- Enrutamiento basado en intención (p. ej., "dirigir tickets de soporte a departamentos")
- Se requiere toma de decisiones consciente del contexto
</Accordion>
<Accordion title="Cuándo usar Condición">
- Decisiones simples basadas en reglas
- Datos estructurados o comparaciones numéricas
- Se necesita enrutamiento rápido y determinista
- Lógica booleana suficiente
</Accordion>
</Accordions>
## Cómo funciona
El bloque Router:
<Steps>
<Step>
<strong>Analiza el contenido</strong>: Utiliza un LLM para entender el contenido y el contexto de entrada
</Step>
<Step>
<strong>Evalúa objetivos</strong>: Compara el contenido con los bloques de destino disponibles
</Step>
<Step>
<strong>Selecciona el destino</strong>: Identifica la ruta más apropiada basada en la intención
</Step>
<Step>
<strong>Ejecuta el enrutamiento</strong>: Dirige el flujo de trabajo al bloque seleccionado
</Step>
</Steps>
## Opciones de configuración
### Contenido/Prompt
El contenido o prompt que el Router analizará para tomar decisiones de enrutamiento. Esto puede ser:
- Una consulta o entrada directa del usuario
- Resultado de un bloque anterior
- Un mensaje generado por el sistema
### Bloques de destino
Los posibles bloques de destino entre los que el Router puede seleccionar. El Router detectará automáticamente los bloques conectados, pero también puedes:
- Personalizar las descripciones de los bloques de destino para mejorar la precisión del enrutamiento
- Especificar criterios de enrutamiento para cada bloque de destino
- Excluir ciertos bloques para que no sean considerados como destinos de enrutamiento
### Selección de modelo
Elige un modelo de IA para potenciar la decisión de enrutamiento:
**OpenAI**: GPT-4o, o1, o3, o4-mini, gpt-4.1 \
**Anthropic**: Claude 3.7 Sonnet \
**Google**: Gemini 2.5 Pro, Gemini 2.0 Flash \
**Otros proveedores**: Groq, Cerebras, xAI, DeepSeek \
**Modelos locales**: Cualquier modelo ejecutándose en Ollama
<div className="w-full max-w-2xl mx-auto overflow-hidden rounded-lg">
<Video src="router-model-dropdown.mp4" width={500} height={350} />
</div>
**Recomendación**: Utiliza modelos con fuertes capacidades de razonamiento como GPT-4o o Claude 3.7 Sonnet para decisiones de enrutamiento más precisas.
### Clave API
Tu clave API para el proveedor de LLM seleccionado. Esta se almacena de forma segura y se utiliza para la autenticación.
### Acceso a los resultados
Después de que un router tome una decisión, puedes acceder a sus resultados:
- **`<router.prompt>`**: Resumen del prompt de enrutamiento utilizado
- **`<router.selected_path>`**: Detalles del bloque de destino elegido
- **`<router.tokens>`**: Estadísticas de uso de tokens del LLM
- **`<router.cost>`**: Resumen de costos para la llamada de enrutamiento (entrada, salida, total)
- **`<router.model>`**: El modelo utilizado para la toma de decisiones
## Funciones avanzadas
### Criterios de enrutamiento personalizados
Define criterios específicos para cada bloque de destino:
```javascript
// Example routing descriptions
Target Block 1: "Technical support issues, API problems, integration questions"
Target Block 2: "Billing inquiries, subscription changes, payment issues"
Target Block 3: "General questions, feedback, feature requests"
```
## Entradas y salidas
<Tabs items={['Configuración', 'Variables']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Contenido/Prompt</strong>: Texto a analizar para decisiones de enrutamiento
</li>
<li>
<strong>Bloques de destino</strong>: Bloques conectados como destinos potenciales
</li>
<li>
<strong>Modelo</strong>: Modelo de IA para análisis de enrutamiento
</li>
<li>
<strong>Clave API</strong>: Autenticación para el proveedor LLM seleccionado
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>router.prompt</strong>: Resumen del prompt de enrutamiento utilizado
</li>
<li>
<strong>router.selected_path</strong>: Detalles del destino elegido
</li>
<li>
<strong>router.tokens</strong>: Estadísticas de uso de tokens
</li>
<li>
<strong>router.cost</strong>: Resumen de costos para la llamada de enrutamiento (entrada, salida, total)
</li>
<li>
<strong>router.model</strong>: Modelo utilizado para la toma de decisiones
</li>
</ul>
</Tab>
</Tabs>
## Ejemplos de casos de uso
### Clasificación de soporte al cliente
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Enrutar tickets de soporte a departamentos especializados</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El usuario envía una solicitud de soporte mediante un formulario</li>
<li>El enrutador analiza el contenido y contexto del ticket</li>
<li>Problemas técnicos → Agente de soporte de ingeniería</li>
<li>Preguntas de facturación → Agente de soporte financiero</li>
</ol>
</div>
### Clasificación de contenido
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Clasificar y enrutar contenido generado por usuarios</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El usuario envía contenido o comentarios</li>
<li>El enrutador analiza el tipo de contenido y el sentimiento</li>
<li>Solicitudes de funciones → Flujo de trabajo del equipo de producto</li>
<li>Informes de errores → Flujo de trabajo de soporte técnico</li>
</ol>
</div>
### Calificación de leads
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Enrutar leads según criterios de calificación</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Información del lead capturada desde un formulario</li>
<li>El enrutador analiza el tamaño de la empresa, la industria y las necesidades</li>
<li>Leads empresariales → Equipo de ventas con precios personalizados</li>
<li>Leads de PYMES → Flujo de incorporación autoservicio</li>
</ol>
</div>
## Mejores prácticas
- **Proporcionar descripciones claras de destino**: Ayuda al enrutador a entender cuándo seleccionar cada destino con descripciones específicas y detalladas
- **Usar criterios de enrutamiento específicos**: Define condiciones claras y ejemplos para cada ruta para mejorar la precisión
- **Implementar rutas alternativas**: Conecta un destino predeterminado para cuando ninguna ruta específica sea apropiada
- **Probar con entradas diversas**: Asegúrate de que el enrutador maneja varios tipos de entrada, casos extremos y contenido inesperado
- **Monitorear el rendimiento del enrutamiento**: Revisa las decisiones de enrutamiento regularmente y refina los criterios basándote en patrones de uso reales
- **Elegir modelos apropiados**: Utiliza modelos con fuertes capacidades de razonamiento para decisiones de enrutamiento complejas

View File

@@ -1,168 +0,0 @@
---
title: Flujo de trabajo
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
El bloque de Flujo de trabajo te permite ejecutar otros flujos de trabajo como componentes reutilizables dentro de tu flujo de trabajo actual. Esto permite un diseño modular, reutilización de código y la creación de flujos de trabajo complejos anidados que pueden componerse a partir de flujos de trabajo más pequeños y enfocados.
<div className="flex justify-center">
<Image
src="/static/blocks/workflow.png"
alt="Bloque de Flujo de trabajo"
width={500}
height={350}
className="my-6"
/>
</div>
<Callout type="info">
Los bloques de Flujo de trabajo permiten un diseño modular al permitirte componer flujos de trabajo complejos a partir de componentes más pequeños y reutilizables.
</Callout>
## Descripción general
El bloque de Flujo de trabajo sirve como puente entre flujos de trabajo, permitiéndote:
<Steps>
<Step>
<strong>Reutilizar flujos de trabajo existentes</strong>: Ejecutar flujos de trabajo previamente creados como componentes dentro de nuevos flujos de trabajo
</Step>
<Step>
<strong>Crear diseños modulares</strong>: Desglosar procesos complejos en flujos de trabajo más pequeños y manejables
</Step>
<Step>
<strong>Mantener la separación de responsabilidades</strong>: Mantener diferentes lógicas de negocio aisladas en flujos de trabajo separados
</Step>
<Step>
<strong>Facilitar la colaboración en equipo</strong>: Compartir y reutilizar flujos de trabajo entre diferentes proyectos y miembros del equipo
</Step>
</Steps>
## Cómo funciona
El bloque de Flujo de trabajo:
1. Toma una referencia a otro flujo de trabajo en tu espacio de trabajo
2. Pasa datos de entrada desde el flujo de trabajo actual al flujo de trabajo hijo (disponible a través de start.input)
3. Ejecuta el flujo de trabajo hijo en un contexto aislado
4. Devuelve el resultado al flujo de trabajo padre para su posterior procesamiento
## Opciones de configuración
### Selección de flujo de trabajo
Elige qué flujo de trabajo ejecutar desde una lista desplegable de flujos de trabajo disponibles en tu espacio de trabajo. La lista incluye:
- Todos los flujos de trabajo a los que tienes acceso en el espacio de trabajo actual
- Flujos de trabajo compartidos contigo por otros miembros del equipo
- Tanto flujos de trabajo habilitados como deshabilitados (aunque solo los habilitados pueden ser ejecutados)
### Contexto de ejecución
El flujo de trabajo secundario se ejecuta con:
- Su propio contexto de ejecución aislado
- Acceso a los mismos recursos del espacio de trabajo (claves API, variables de entorno)
- Verificaciones adecuadas de permisos y membresía del espacio de trabajo
- Tracespan anidado en el registro de ejecución
<Callout type="warning">
**Detección de ciclos**: El sistema detecta y previene automáticamente dependencias circulares entre flujos de trabajo para evitar bucles infinitos.
</Callout>
## Entradas y salidas
<Tabs items={['Configuration', 'Variables', 'Results']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Selección de flujo de trabajo</strong>: Elige qué flujo de trabajo ejecutar
</li>
<li>
<strong>Datos de entrada</strong>: Variable o referencia de bloque para pasar al flujo de trabajo secundario
</li>
<li>
<strong>Contexto de ejecución</strong>: Entorno aislado con recursos del espacio de trabajo
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>workflow.success</strong>: Booleano que indica el estado de finalización
</li>
<li>
<strong>workflow.childWorkflowName</strong>: Nombre del flujo de trabajo secundario ejecutado
</li>
<li>
<strong>workflow.result</strong>: Resultado devuelto por el flujo de trabajo secundario
</li>
<li>
<strong>workflow.error</strong>: Detalles del error si el flujo de trabajo falló
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Respuesta del flujo de trabajo</strong>: Salida principal del flujo de trabajo secundario
</li>
<li>
<strong>Estado de ejecución</strong>: Estado de éxito e información de error
</li>
<li>
<strong>Acceso</strong>: Disponible en bloques después del flujo de trabajo
</li>
</ul>
</Tab>
</Tabs>
## Ejemplos de casos de uso
### Incorporación modular de clientes
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Dividir la incorporación compleja en componentes reutilizables</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El flujo de trabajo principal recibe datos del cliente</li>
<li>El bloque de flujo de trabajo ejecuta el flujo de validación</li>
<li>El bloque de flujo de trabajo ejecuta el flujo de configuración de cuenta</li>
<li>El bloque de flujo de trabajo ejecuta el flujo de correo de bienvenida</li>
</ol>
</div>
### Arquitectura de microservicios
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Crear flujos de trabajo de servicios independientes</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El flujo de trabajo de procesamiento de pagos gestiona transacciones</li>
<li>El flujo de trabajo de gestión de inventario actualiza el stock</li>
<li>El flujo de trabajo de notificaciones envía confirmaciones</li>
<li>El flujo de trabajo principal orquesta todos los servicios</li>
</ol>
</div>
### Procesamiento condicional
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Escenario: Ejecutar diferentes flujos de trabajo según condiciones</h4>
<ol className="list-decimal pl-5 text-sm">
<li>El bloque de condición evalúa el tipo de usuario</li>
<li>Usuarios empresariales → Flujo de trabajo de aprobación complejo</li>
<li>Usuarios estándar → Flujo de trabajo de aprobación simple</li>
<li>Usuarios gratuitos → Flujo de trabajo de procesamiento básico</li>
</ol>
</div>
## Mejores prácticas
- **Mantén los flujos de trabajo enfocados**: Diseña flujos de trabajo secundarios para manejar tareas específicas y bien definidas con entradas y salidas claras
- **Minimiza la profundidad de anidación**: Evita jerarquías de flujos de trabajo profundamente anidadas para mejorar la mantenibilidad y el rendimiento
- **Maneja los errores con elegancia**: Implementa un manejo adecuado de errores para fallos en flujos de trabajo secundarios y proporciona mecanismos alternativos
- **Prueba de forma independiente**: Asegúrate de que los flujos de trabajo secundarios puedan ser probados y validados independientemente de los flujos de trabajo principales
- **Usa nomenclatura semántica**: Asigna a los flujos de trabajo nombres descriptivos que indiquen claramente su propósito y funcionalidad

View File

@@ -1,43 +0,0 @@
---
title: Conceptos básicos de conexión
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
## Cómo funcionan las conexiones
Las conexiones son las vías que permiten que los datos fluyan entre bloques en tu flujo de trabajo. En Sim, las conexiones definen cómo la información pasa de un bloque a otro, permitiendo el flujo de datos a través de tu flujo de trabajo.
<Callout type="info">
Cada conexión representa una relación dirigida donde los datos fluyen desde la salida de un bloque de origen
hacia la entrada de un bloque de destino.
</Callout>
### Creación de conexiones
<Steps>
<Step>
<strong>Seleccionar bloque de origen</strong>: Haz clic en el puerto de salida del bloque desde el que quieres conectar
</Step>
<Step>
<strong>Dibujar conexión</strong>: Arrastra hasta el puerto de entrada del bloque de destino
</Step>
<Step>
<strong>Confirmar conexión</strong>: Suelta para crear la conexión
</Step>
</Steps>
### Flujo de conexión
El flujo de datos a través de las conexiones sigue estos principios:
1. **Flujo direccional**: Los datos siempre fluyen de las salidas a las entradas
2. **Orden de ejecución**: Los bloques se ejecutan en orden según sus conexiones
3. **Transformación de datos**: Los datos pueden transformarse al pasar entre bloques
4. **Rutas condicionales**: Algunos bloques (como Router y Condition) pueden dirigir el flujo a diferentes rutas
<Callout type="warning">
Eliminar una conexión detendrá inmediatamente el flujo de datos entre los bloques. Asegúrate de que esto es
lo que deseas antes de eliminar conexiones.
</Callout>

View File

@@ -1,195 +0,0 @@
---
title: Estructura de datos de conexión
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
Cuando conectas bloques, entender la estructura de datos de las diferentes salidas de bloques es importante porque la estructura de datos de salida del bloque de origen determina qué valores están disponibles en el bloque de destino. Cada tipo de bloque produce una estructura de salida específica a la que puedes hacer referencia en bloques posteriores.
<Callout type="info">
Entender estas estructuras de datos es esencial para utilizar eficazmente las etiquetas de conexión y
acceder a los datos correctos en tus flujos de trabajo.
</Callout>
## Estructuras de salida de bloques
Diferentes tipos de bloques producen diferentes estructuras de salida. Esto es lo que puedes esperar de cada tipo de bloque:
<Tabs items={['Salida del agente', 'Salida de API', 'Salida de función', 'Salida del evaluador', 'Salida de condición', 'Salida del enrutador']}>
<Tab>
```json
{
"content": "The generated text response",
"model": "gpt-4o",
"tokens": {
"prompt": 120,
"completion": 85,
"total": 205
},
"toolCalls": [...],
"cost": [...],
"usage": [...]
}
```
### Campos de salida del bloque de agente
- **content**: La respuesta de texto principal generada por el agente
- **model**: El modelo de IA utilizado (p. ej., "gpt-4o", "claude-3-opus")
- **tokens**: Estadísticas de uso de tokens
- **prompt**: Número de tokens en el prompt
- **completion**: Número de tokens en la respuesta
- **total**: Total de tokens utilizados
- **toolCalls**: Array de llamadas a herramientas realizadas por el agente (si las hay)
- **cost**: Array de objetos de costo para cada llamada a herramienta (si las hay)
- **usage**: Estadísticas de uso de tokens para toda la respuesta
</Tab>
<Tab>
```json
{
"data": "Response data",
"status": 200,
"headers": {
"content-type": "application/json",
"cache-control": "no-cache"
}
}
```
### Campos de salida del bloque de API
- **data**: Los datos de respuesta de la API (puede ser de cualquier tipo)
- **status**: Código de estado HTTP de la respuesta
- **headers**: Cabeceras HTTP devueltas por la API
</Tab>
<Tab>
```json
{
"result": "Function return value",
"stdout": "Console output",
}
```
### Campos de salida del bloque de función
- **result**: El valor de retorno de la función (puede ser de cualquier tipo)
- **stdout**: Salida de consola capturada durante la ejecución de la función
</Tab>
<Tab>
```json
{
"content": "Evaluation summary",
"model": "gpt-5",
"tokens": {
"prompt": 120,
"completion": 85,
"total": 205
},
"metric1": 8.5,
"metric2": 7.2,
"metric3": 9.0
}
```
### Campos de salida del bloque evaluador
- **content**: Resumen de la evaluación
- **model**: El modelo de IA utilizado para la evaluación
- **tokens**: Estadísticas de uso de tokens
- **[metricName]**: Puntuación para cada métrica definida en el evaluador (campos dinámicos)
</Tab>
<Tab>
```json
{
"content": "Original content passed through",
"conditionResult": true,
"selectedPath": {
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
"blockType": "agent",
"blockTitle": "Follow-up Agent"
},
"selectedConditionId": "condition-1"
}
```
### Campos de salida del bloque de condición
- **content**: El contenido original que se transmite
- **conditionResult**: Resultado booleano de la evaluación de la condición
- **selectedPath**: Información sobre la ruta seleccionada
- **blockId**: ID del siguiente bloque en la ruta seleccionada
- **blockType**: Tipo del siguiente bloque
- **blockTitle**: Título del siguiente bloque
- **selectedConditionId**: ID de la condición seleccionada
</Tab>
<Tab>
```json
{
"content": "Routing decision",
"model": "gpt-4o",
"tokens": {
"prompt": 120,
"completion": 85,
"total": 205
},
"selectedPath": {
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
"blockType": "agent",
"blockTitle": "Customer Service Agent"
}
}
```
### Campos de salida del bloque enrutador
- **content**: El texto de decisión de enrutamiento
- **model**: El modelo de IA utilizado para el enrutamiento
- **tokens**: Estadísticas de uso de tokens
- **selectedPath**: Información sobre la ruta seleccionada
- **blockId**: ID del bloque de destino seleccionado
- **blockType**: Tipo del bloque seleccionado
- **blockTitle**: Título del bloque seleccionado
</Tab>
</Tabs>
## Estructuras de salida personalizadas
Algunos bloques pueden producir estructuras de salida personalizadas según su configuración:
1. **Bloques de agente con formato de respuesta**: Al usar un formato de respuesta en un bloque de agente, la estructura de salida coincidirá con el esquema definido en lugar de la estructura estándar.
2. **Bloques de función**: El campo `result` puede contener cualquier estructura de datos devuelta por el código de tu función.
3. **Bloques de API**: El campo `data` contendrá lo que devuelva la API, que podría ser cualquier estructura JSON válida.
<Callout type="warning">
Verifica siempre la estructura de salida real de tus bloques durante el desarrollo para asegurarte de que
estás referenciando los campos correctos en tus conexiones.
</Callout>
## Estructuras de datos anidadas
Muchas salidas de bloques contienen estructuras de datos anidadas. Puedes acceder a estas utilizando la notación de punto en las etiquetas de conexión:
```
<blockName.path.to.nested.data>
```
Por ejemplo:
- `<agent1.tokens.total>` - Accede al total de tokens desde un bloque de Agente
- `<api1.data.results[0].id>` - Accede al ID del primer resultado de una respuesta de API
- `<function1.result.calculations.total>` - Accede a un campo anidado en el resultado de un bloque de Función

View File

@@ -1,42 +0,0 @@
---
title: Conexiones
description: Conecta tus bloques entre sí.
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { ConnectIcon } from '@/components/icons'
import { Video } from '@/components/ui/video'
Las conexiones son las vías que permiten que los datos fluyan entre bloques en tu flujo de trabajo. Definen cómo se pasa la información de un bloque a otro, permitiéndote crear procesos sofisticados de múltiples pasos.
<Callout type="info">
Las conexiones correctamente configuradas son esenciales para crear flujos de trabajo efectivos. Determinan cómo
se mueven los datos a través de tu sistema y cómo los bloques interactúan entre sí.
</Callout>
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="connections.mp4" />
</div>
## Tipos de conexiones
Sim admite diferentes tipos de conexiones que permiten varios patrones de flujo de trabajo:
<Cards>
<Card title="Conceptos básicos de conexiones" href="/connections/basics">
Aprende cómo funcionan las conexiones y cómo crearlas en tus flujos de trabajo
</Card>
<Card title="Etiquetas de conexión" href="/connections/tags">
Comprende cómo usar etiquetas de conexión para referenciar datos entre bloques
</Card>
<Card title="Estructura de datos" href="/connections/data-structure">
Explora las estructuras de datos de salida de diferentes tipos de bloques
</Card>
<Card title="Acceso a datos" href="/connections/accessing-data">
Aprende técnicas para acceder y manipular datos conectados
</Card>
<Card title="Mejores prácticas" href="/connections/best-practices">
Sigue los patrones recomendados para una gestión eficaz de conexiones
</Card>
</Cards>

View File

@@ -1,109 +0,0 @@
---
title: Etiquetas de conexión
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Video } from '@/components/ui/video'
Las etiquetas de conexión son representaciones visuales de los datos disponibles desde bloques conectados, proporcionando una manera fácil de referenciar datos entre bloques y salidas de bloques anteriores en tu flujo de trabajo.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="connections.mp4" />
</div>
### ¿Qué son las etiquetas de conexión?
Las etiquetas de conexión son elementos interactivos que aparecen cuando los bloques están conectados. Representan los datos que pueden fluir de un bloque a otro y te permiten:
- Visualizar datos disponibles de bloques de origen
- Referenciar campos de datos específicos en bloques de destino
- Crear flujos de datos dinámicos entre bloques
<Callout type="info">
Las etiquetas de conexión facilitan ver qué datos están disponibles de bloques anteriores y usarlos en tu
bloque actual sin tener que recordar estructuras de datos complejas.
</Callout>
## Uso de etiquetas de conexión
Hay dos formas principales de usar etiquetas de conexión en tus flujos de trabajo:
<div className="my-6 grid grid-cols-1 gap-4 md:grid-cols-2">
<div className="rounded-lg border border-gray-200 p-4 dark:border-gray-800">
<h3 className="mb-2 text-lg font-medium">Arrastrar y soltar</h3>
<div className="text-sm text-gray-600 dark:text-gray-400">
Haz clic en una etiqueta de conexión y arrástrala a los campos de entrada de los bloques de destino. Aparecerá un menú desplegable
mostrando los valores disponibles.
</div>
<ol className="mt-2 list-decimal pl-5 text-sm text-gray-600 dark:text-gray-400">
<li>Pasa el cursor sobre una etiqueta de conexión para ver los datos disponibles</li>
<li>Haz clic y arrastra la etiqueta a un campo de entrada</li>
<li>Selecciona el campo de datos específico del menú desplegable</li>
<li>La referencia se inserta automáticamente</li>
</ol>
</div>
<div className="rounded-lg border border-gray-200 p-4 dark:border-gray-800">
<h3 className="mb-2 text-lg font-medium">Sintaxis de corchetes angulares</h3>
<div className="text-sm text-gray-600 dark:text-gray-400">
Escribe <code>&lt;&gt;</code> en los campos de entrada para ver un menú desplegable de valores de conexión disponibles
de bloques anteriores.
</div>
<ol className="mt-2 list-decimal pl-5 text-sm text-gray-600 dark:text-gray-400">
<li>Haz clic en cualquier campo de entrada donde quieras usar datos conectados</li>
<li>
Escribe <code>&lt;&gt;</code> para activar el menú desplegable de conexión
</li>
<li>Navega y selecciona los datos que quieres referenciar</li>
<li>Continúa escribiendo o selecciona del menú desplegable para completar la referencia</li>
</ol>
</div>
</div>
## Sintaxis de etiquetas
Las etiquetas de conexión utilizan una sintaxis simple para hacer referencia a los datos:
```
<blockName.path.to.data>
```
Donde:
- `blockName` es el nombre del bloque de origen
- `path.to.data` es la ruta al campo de datos específico
Por ejemplo:
- `<agent1.content>` - Hace referencia al campo de contenido de un bloque con ID "agent1"
- `<api2.data.users[0].name>` - Hace referencia al nombre del primer usuario en el array de usuarios desde el campo de datos de un bloque con ID "api2"
## Referencias dinámicas de etiquetas
Las etiquetas de conexión se evalúan en tiempo de ejecución, lo que significa:
1. Siempre hacen referencia a los datos más actuales
2. Pueden utilizarse en expresiones y combinarse con texto estático
3. Pueden anidarse dentro de otras estructuras de datos
### Ejemplos
```javascript
// Reference in text
"The user's name is <userBlock.name>"
// Reference in JSON
{
"userName": "<userBlock.name>",
"orderTotal": <apiBlock.data.total>
}
// Reference in code
const greeting = "Hello, <userBlock.name>!";
const total = <apiBlock.data.total> * 1.1; // Add 10% tax
```
<Callout type="warning">
Cuando utilices etiquetas de conexión en contextos numéricos, asegúrate de que los datos referenciados sean realmente un número
para evitar problemas de conversión de tipos.
</Callout>

View File

@@ -1,161 +0,0 @@
---
title: Copilot
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Image } from '@/components/ui/image'
import { MessageCircle, Package, Zap, Infinity as InfinityIcon, Brain, BrainCircuit } from 'lucide-react'
Copilot es tu asistente integrado en el editor que te ayuda a crear y editar flujos de trabajo con Sim Copilot, así como a entenderlos y mejorarlos. Puede:
- **Explicar**: Responder preguntas sobre Sim y tu flujo de trabajo actual
- **Guiar**: Sugerir ediciones y mejores prácticas
- **Editar**: Realizar cambios en bloques, conexiones y configuraciones cuando los apruebes
<Callout type="info">
Copilot es un servicio gestionado por Sim. Para implementaciones autoalojadas, genera una clave API de Copilot en la aplicación alojada (sim.ai → Configuración → Copilot)
1. Ve a [sim.ai](https://sim.ai) → Configuración → Copilot y genera una clave API de Copilot
2. Establece `COPILOT_API_KEY` en tu entorno autoalojado con ese valor
</Callout>
## Menú contextual (@)
Usa el símbolo `@` para hacer referencia a varios recursos y proporcionar a Copilot más contexto sobre tu espacio de trabajo:
<Image
src="/static/copilot/copilot-menu.png"
alt="Menú contextual de Copilot mostrando opciones de referencia disponibles"
width={600}
height={400}
/>
El menú `@` proporciona acceso a:
- **Chats**: Referencia conversaciones previas con copilot
- **Todos los flujos de trabajo**: Referencia cualquier flujo de trabajo en tu espacio de trabajo
- **Bloques de flujo de trabajo**: Referencia bloques específicos de los flujos de trabajo
- **Bloques**: Referencia tipos de bloques y plantillas
- **Conocimiento**: Referencia tus documentos subidos y base de conocimientos
- **Documentación**: Referencia la documentación de Sim
- **Plantillas**: Referencia plantillas de flujo de trabajo
- **Registros**: Referencia registros de ejecución y resultados
Esta información contextual ayuda a Copilot a proporcionar asistencia más precisa y relevante para tu caso de uso específico.
## Modos
<Cards>
<Card
title={
<span className="inline-flex items-center gap-2">
<MessageCircle className="h-4 w-4 text-muted-foreground" />
Preguntar
</span>
}
>
<div className="m-0 text-sm">
Modo de preguntas y respuestas para explicaciones, orientación y sugerencias sin realizar cambios en tu flujo de trabajo.
</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<Package className="h-4 w-4 text-muted-foreground" />
Agente
</span>
}
>
<div className="m-0 text-sm">
Modo de construcción y edición. Copilot propone ediciones específicas (añadir bloques, conectar variables, ajustar configuraciones) y las aplica cuando las apruebas.
</div>
</Card>
</Cards>
## Niveles de profundidad
<Cards>
<Card
title={
<span className="inline-flex items-center gap-2">
<Zap className="h-4 w-4 text-muted-foreground" />
Rápido
</span>
}
>
<div className="m-0 text-sm">El más rápido y económico. Ideal para ediciones pequeñas, flujos de trabajo simples y ajustes menores.</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<InfinityIcon className="h-4 w-4 text-muted-foreground" />
Auto
</span>
}
>
<div className="m-0 text-sm">Equilibrio entre velocidad y razonamiento. Opción predeterminada recomendada para la mayoría de las tareas.</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<Brain className="h-4 w-4 text-muted-foreground" />
Avanzado
</span>
}
>
<div className="m-0 text-sm">Mayor capacidad de razonamiento para flujos de trabajo más grandes y ediciones complejas sin perder rendimiento.</div>
</Card>
<Card
title={
<span className="inline-flex items-center gap-2">
<BrainCircuit className="h-4 w-4 text-muted-foreground" />
Behemoth
</span>
}
>
<div className="m-0 text-sm">Máxima capacidad de razonamiento para planificación profunda, depuración y cambios arquitectónicos complejos.</div>
</Card>
</Cards>
### Interfaz de selección de modo
Puedes cambiar fácilmente entre diferentes modos de razonamiento usando el selector de modo en la interfaz de Copilot:
<Image
src="/static/copilot/copilot-models.png"
alt="Selección de modo de Copilot mostrando el modo Avanzado con el interruptor MAX"
width={600}
height={300}
/>
La interfaz te permite:
- **Seleccionar nivel de razonamiento**: Elige entre Rápido, Auto, Avanzado o Behemoth
- **Activar modo MAX**: Activa el interruptor para obtener las máximas capacidades de razonamiento cuando necesites el análisis más exhaustivo
- **Ver descripciones de modos**: Comprende para qué está optimizado cada modo
Elige tu modo según la complejidad de tu tarea - usa Rápido para preguntas simples y Behemoth para cambios arquitectónicos complejos.
## Facturación y cálculo de costos
### Cómo se calculan los costos
El uso de Copilot se factura por token del LLM subyacente:
- **Tokens de entrada**: facturados a la tarifa base del proveedor (**a costo**)
- **Tokens de salida**: facturados a **1,5×** la tarifa base de salida del proveedor
```javascript
copilotCost = (inputTokens × inputPrice + outputTokens × (outputPrice × 1.5)) / 1,000,000
```
| Componente | Tarifa aplicada |
|------------|----------------------|
| Entrada | inputPrice |
| Salida | outputPrice × 1.5 |
<Callout type="warning">
Los precios mostrados reflejan las tarifas a partir del 4 de septiembre de 2025. Consulte la documentación del proveedor para conocer los precios actuales.
</Callout>
<Callout type="info">
Los precios de los modelos son por millón de tokens. El cálculo divide por 1.000.000 para obtener el costo real. Consulte <a href="/execution/costs">la página de Cálculo de Costos</a> para antecedentes y ejemplos.
</Callout>

View File

@@ -1,551 +0,0 @@
---
title: API externa
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { CodeBlock } from 'fumadocs-ui/components/codeblock'
import { Video } from '@/components/ui/video'
Sim proporciona una API externa completa para consultar registros de ejecución de flujos de trabajo y configurar webhooks para notificaciones en tiempo real cuando los flujos de trabajo se completan.
## Autenticación
Todas las solicitudes a la API requieren una clave de API pasada en el encabezado `x-api-key`:
```bash
curl -H "x-api-key: YOUR_API_KEY" \
https://sim.ai/api/v1/logs?workspaceId=YOUR_WORKSPACE_ID
```
Puedes generar claves de API desde la configuración de usuario en el panel de control de Sim.
## API de registros
Todas las respuestas de la API incluyen información sobre tus límites de ejecución de flujos de trabajo y su uso:
```json
"limits": {
"workflowExecutionRateLimit": {
"sync": {
"limit": 60, // Max sync workflow executions per minute
"remaining": 58, // Remaining sync workflow executions
"resetAt": "..." // When the window resets
},
"async": {
"limit": 60, // Max async workflow executions per minute
"remaining": 59, // Remaining async workflow executions
"resetAt": "..." // When the window resets
}
},
"usage": {
"currentPeriodCost": 1.234, // Current billing period usage in USD
"limit": 10, // Usage limit in USD
"plan": "pro", // Current subscription plan
"isExceeded": false // Whether limit is exceeded
}
}
```
**Nota:** Los límites de tasa en el cuerpo de la respuesta son para ejecuciones de flujos de trabajo. Los límites de tasa para llamar a este endpoint de la API están en los encabezados de respuesta (`X-RateLimit-*`).
### Consultar registros
Consulta los registros de ejecución de flujos de trabajo con amplias opciones de filtrado.
<Tabs items={['Request', 'Response']}>
<Tab value="Request">
```http
GET /api/v1/logs
```
**Parámetros requeridos:**
- `workspaceId` - Tu ID de espacio de trabajo
**Filtros opcionales:**
- `workflowIds` - IDs de flujos de trabajo separados por comas
- `folderIds` - IDs de carpetas separados por comas
- `triggers` - Tipos de disparadores separados por comas: `api`, `webhook`, `schedule`, `manual`, `chat`
- `level` - Filtrar por nivel: `info`, `error`
- `startDate` - Marca de tiempo ISO para el inicio del rango de fechas
- `endDate` - Marca de tiempo ISO para el fin del rango de fechas
- `executionId` - Coincidencia exacta de ID de ejecución
- `minDurationMs` - Duración mínima de ejecución en milisegundos
- `maxDurationMs` - Duración máxima de ejecución en milisegundos
- `minCost` - Costo mínimo de ejecución
- `maxCost` - Costo máximo de ejecución
- `model` - Filtrar por modelo de IA utilizado
**Paginación:**
- `limit` - Resultados por página (predeterminado: 100)
- `cursor` - Cursor para la siguiente página
- `order` - Orden de clasificación: `desc`, `asc` (predeterminado: desc)
**Nivel de detalle:**
- `details` - Nivel de detalle de la respuesta: `basic`, `full` (predeterminado: básico)
- `includeTraceSpans` - Incluir intervalos de seguimiento (predeterminado: falso)
- `includeFinalOutput` - Incluir salida final (predeterminado: falso)
</Tab>
<Tab value="Response">
```json
{
"data": [
{
"id": "log_abc123",
"workflowId": "wf_xyz789",
"executionId": "exec_def456",
"level": "info",
"trigger": "api",
"startedAt": "2025-01-01T12:34:56.789Z",
"endedAt": "2025-01-01T12:34:57.123Z",
"totalDurationMs": 334,
"cost": {
"total": 0.00234
},
"files": null
}
],
"nextCursor": "eyJzIjoiMjAyNS0wMS0wMVQxMjozNDo1Ni43ODlaIiwiaWQiOiJsb2dfYWJjMTIzIn0",
"limits": {
"workflowExecutionRateLimit": {
"sync": {
"limit": 60,
"remaining": 58,
"resetAt": "2025-01-01T12:35:56.789Z"
},
"async": {
"limit": 60,
"remaining": 59,
"resetAt": "2025-01-01T12:35:56.789Z"
}
},
"usage": {
"currentPeriodCost": 1.234,
"limit": 10,
"plan": "pro",
"isExceeded": false
}
}
}
```
</Tab>
</Tabs>
### Obtener detalles del registro
Recupera información detallada sobre una entrada de registro específica.
<Tabs items={['Request', 'Response']}>
<Tab value="Request">
```http
GET /api/v1/logs/{id}
```
</Tab>
<Tab value="Response">
```json
{
"data": {
"id": "log_abc123",
"workflowId": "wf_xyz789",
"executionId": "exec_def456",
"level": "info",
"trigger": "api",
"startedAt": "2025-01-01T12:34:56.789Z",
"endedAt": "2025-01-01T12:34:57.123Z",
"totalDurationMs": 334,
"workflow": {
"id": "wf_xyz789",
"name": "My Workflow",
"description": "Process customer data"
},
"executionData": {
"traceSpans": [...],
"finalOutput": {...}
},
"cost": {
"total": 0.00234,
"tokens": {
"prompt": 123,
"completion": 456,
"total": 579
},
"models": {
"gpt-4o": {
"input": 0.001,
"output": 0.00134,
"total": 0.00234,
"tokens": {
"prompt": 123,
"completion": 456,
"total": 579
}
}
}
},
"limits": {
"workflowExecutionRateLimit": {
"sync": {
"limit": 60,
"remaining": 58,
"resetAt": "2025-01-01T12:35:56.789Z"
},
"async": {
"limit": 60,
"remaining": 59,
"resetAt": "2025-01-01T12:35:56.789Z"
}
},
"usage": {
"currentPeriodCost": 1.234,
"limit": 10,
"plan": "pro",
"isExceeded": false
}
}
}
}
```
</Tab>
</Tabs>
### Obtener detalles de ejecución
Recupera detalles de ejecución incluyendo la instantánea del estado del flujo de trabajo.
<Tabs items={['Request', 'Response']}>
<Tab value="Request">
```http
GET /api/v1/logs/executions/{executionId}
```
</Tab>
<Tab value="Response">
```json
{
"executionId": "exec_def456",
"workflowId": "wf_xyz789",
"workflowState": {
"blocks": {...},
"edges": [...],
"loops": {...},
"parallels": {...}
},
"executionMetadata": {
"trigger": "api",
"startedAt": "2025-01-01T12:34:56.789Z",
"endedAt": "2025-01-01T12:34:57.123Z",
"totalDurationMs": 334,
"cost": {...}
}
}
```
</Tab>
</Tabs>
## Suscripciones a webhooks
Recibe notificaciones en tiempo real cuando se completan las ejecuciones de flujos de trabajo. Los webhooks se configuran a través de la interfaz de usuario de Sim en el editor de flujos de trabajo.
### Configuración
Los webhooks pueden configurarse para cada flujo de trabajo a través de la interfaz de usuario del editor de flujos de trabajo. Haz clic en el icono de webhook en la barra de control para configurar tus suscripciones a webhooks.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="configure-webhook.mp4" width={700} height={450} />
</div>
**Opciones de configuración disponibles:**
- `url`: URL del punto final de tu webhook
- `secret`: Secreto opcional para verificación de firma HMAC
- `includeFinalOutput`: Incluir la salida final del flujo de trabajo en la carga útil
- `includeTraceSpans`: Incluir intervalos de seguimiento de ejecución detallados
- `includeRateLimits`: Incluir información del límite de tasa del propietario del flujo de trabajo
- `includeUsageData`: Incluir datos de uso y facturación del propietario del flujo de trabajo
- `levelFilter`: Array de niveles de registro a recibir (`info`, `error`)
- `triggerFilter`: Array de tipos de disparadores a recibir (`api`, `webhook`, `schedule`, `manual`, `chat`)
- `active`: Habilitar/deshabilitar la suscripción al webhook
### Carga útil del webhook
Cuando se completa la ejecución de un flujo de trabajo, Sim envía una solicitud POST a tu URL de webhook:
```json
{
"id": "evt_123",
"type": "workflow.execution.completed",
"timestamp": 1735925767890,
"data": {
"workflowId": "wf_xyz789",
"executionId": "exec_def456",
"status": "success",
"level": "info",
"trigger": "api",
"startedAt": "2025-01-01T12:34:56.789Z",
"endedAt": "2025-01-01T12:34:57.123Z",
"totalDurationMs": 334,
"cost": {
"total": 0.00234,
"tokens": {
"prompt": 123,
"completion": 456,
"total": 579
},
"models": {
"gpt-4o": {
"input": 0.001,
"output": 0.00134,
"total": 0.00234,
"tokens": {
"prompt": 123,
"completion": 456,
"total": 579
}
}
}
},
"files": null,
"finalOutput": {...}, // Only if includeFinalOutput=true
"traceSpans": [...], // Only if includeTraceSpans=true
"rateLimits": {...}, // Only if includeRateLimits=true
"usage": {...} // Only if includeUsageData=true
},
"links": {
"log": "/v1/logs/log_abc123",
"execution": "/v1/logs/executions/exec_def456"
}
}
```
### Cabeceras de webhook
Cada solicitud de webhook incluye estas cabeceras:
- `sim-event`: Tipo de evento (siempre `workflow.execution.completed`)
- `sim-timestamp`: Marca de tiempo Unix en milisegundos
- `sim-delivery-id`: ID único de entrega para idempotencia
- `sim-signature`: Firma HMAC-SHA256 para verificación (si se configura un secreto)
- `Idempotency-Key`: Igual que el ID de entrega para detección de duplicados
### Verificación de firma
Si configuras un secreto de webhook, verifica la firma para asegurar que el webhook proviene de Sim:
<Tabs items={['Node.js', 'Python']}>
<Tab value="Node.js">
```javascript
import crypto from 'crypto';
function verifyWebhookSignature(body, signature, secret) {
const [timestampPart, signaturePart] = signature.split(',');
const timestamp = timestampPart.replace('t=', '');
const expectedSignature = signaturePart.replace('v1=', '');
const signatureBase = `${timestamp}.${body}`;
const hmac = crypto.createHmac('sha256', secret);
hmac.update(signatureBase);
const computedSignature = hmac.digest('hex');
return computedSignature === expectedSignature;
}
// In your webhook handler
app.post('/webhook', (req, res) => {
const signature = req.headers['sim-signature'];
const body = JSON.stringify(req.body);
if (!verifyWebhookSignature(body, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature');
}
// Process the webhook...
});
```
</Tab>
<Tab value="Python">
```python
import hmac
import hashlib
import json
def verify_webhook_signature(body: str, signature: str, secret: str) -> bool:
timestamp_part, signature_part = signature.split(',')
timestamp = timestamp_part.replace('t=', '')
expected_signature = signature_part.replace('v1=', '')
signature_base = f"{timestamp}.{body}"
computed_signature = hmac.new(
secret.encode(),
signature_base.encode(),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(computed_signature, expected_signature)
# In your webhook handler
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('sim-signature')
body = json.dumps(request.json)
if not verify_webhook_signature(body, signature, os.environ['WEBHOOK_SECRET']):
return 'Invalid signature', 401
# Process the webhook...
```
</Tab>
</Tabs>
### Política de reintentos
Las entregas de webhook fallidas se reintentan con retroceso exponencial y fluctuación:
- Máximo de intentos: 5
- Retrasos de reintento: 5 segundos, 15 segundos, 1 minuto, 3 minutos, 10 minutos
- Fluctuación: Hasta un 10% de retraso adicional para prevenir el efecto de manada
- Solo las respuestas HTTP 5xx y 429 activan reintentos
- Las entregas agotan el tiempo de espera después de 30 segundos
<Callout type="info">
Las entregas de webhook se procesan de forma asíncrona y no afectan al rendimiento de ejecución del flujo de trabajo.
</Callout>
## Mejores prácticas
1. **Estrategia de sondeo**: Al sondear registros, utiliza paginación basada en cursor con `order=asc` y `startDate` para obtener nuevos registros de manera eficiente.
2. **Seguridad de webhook**: Siempre configura un secreto de webhook y verifica las firmas para asegurar que las solicitudes provienen de Sim.
3. **Idempotencia**: Utiliza la cabecera `Idempotency-Key` para detectar y manejar entregas duplicadas de webhook.
4. **Privacidad**: Por defecto, `finalOutput` y `traceSpans` están excluidos de las respuestas. Habilítalos solo si necesitas los datos y comprendes las implicaciones de privacidad.
5. **Limitación de tasa**: Implementa retroceso exponencial cuando recibas respuestas 429. Consulta la cabecera `Retry-After` para conocer el tiempo de espera recomendado.
## Limitación de tasa
La API implementa limitación de tasa para garantizar un uso justo:
- **Plan gratuito**: 10 solicitudes por minuto
- **Plan Pro**: 30 solicitudes por minuto
- **Plan Team**: 60 solicitudes por minuto
- **Plan Enterprise**: Límites personalizados
La información del límite de tasa se incluye en los encabezados de respuesta:
- `X-RateLimit-Limit`: Máximo de solicitudes por ventana
- `X-RateLimit-Remaining`: Solicitudes restantes en la ventana actual
- `X-RateLimit-Reset`: Marca de tiempo ISO cuando se reinicia la ventana
## Ejemplo: Sondeo para nuevos registros
```javascript
let cursor = null;
const workspaceId = 'YOUR_WORKSPACE_ID';
const startDate = new Date().toISOString();
async function pollLogs() {
const params = new URLSearchParams({
workspaceId,
startDate,
order: 'asc',
limit: '100'
});
if (cursor) {
params.append('cursor', cursor);
}
const response = await fetch(
`https://sim.ai/api/v1/logs?${params}`,
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
if (response.ok) {
const data = await response.json();
// Process new logs
for (const log of data.data) {
console.log(`New execution: ${log.executionId}`);
}
// Update cursor for next poll
if (data.nextCursor) {
cursor = data.nextCursor;
}
}
}
// Poll every 30 seconds
setInterval(pollLogs, 30000);
```
## Ejemplo: Procesamiento de webhooks
```javascript
import express from 'express';
import crypto from 'crypto';
const app = express();
app.use(express.json());
app.post('/sim-webhook', (req, res) => {
// Verify signature
const signature = req.headers['sim-signature'];
const body = JSON.stringify(req.body);
if (!verifyWebhookSignature(body, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature');
}
// Check timestamp to prevent replay attacks
const timestamp = parseInt(req.headers['sim-timestamp']);
const fiveMinutesAgo = Date.now() - (5 * 60 * 1000);
if (timestamp < fiveMinutesAgo) {
return res.status(401).send('Timestamp too old');
}
// Process the webhook
const event = req.body;
switch (event.type) {
case 'workflow.execution.completed':
const { workflowId, executionId, status, cost } = event.data;
if (status === 'error') {
console.error(`Workflow ${workflowId} failed: ${executionId}`);
// Handle error...
} else {
console.log(`Workflow ${workflowId} completed: ${executionId}`);
console.log(`Cost: ${cost.total}`);
// Process successful execution...
}
break;
}
// Return 200 to acknowledge receipt
res.status(200).send('OK');
});
app.listen(3000, () => {
console.log('Webhook server listening on port 3000');
});
```

View File

@@ -1,132 +0,0 @@
---
title: Conceptos básicos de ejecución
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
Entender cómo se ejecutan los flujos de trabajo en Sim es clave para crear automatizaciones eficientes y confiables. El motor de ejecución gestiona automáticamente las dependencias, la concurrencia y el flujo de datos para garantizar que tus flujos de trabajo funcionen de manera fluida y predecible.
## Cómo se ejecutan los flujos de trabajo
El motor de ejecución de Sim procesa los flujos de trabajo de manera inteligente analizando las dependencias y ejecutando los bloques en el orden más eficiente posible.
### Ejecución concurrente por defecto
Múltiples bloques se ejecutan simultáneamente cuando no dependen entre sí. Esta ejecución paralela mejora dramáticamente el rendimiento sin requerir configuración manual.
<Image
src="/static/execution/concurrency.png"
alt="Múltiples bloques ejecutándose concurrentemente después del bloque de Inicio"
width={800}
height={500}
/>
En este ejemplo, tanto el bloque de agente de Atención al Cliente como el de Investigador Profundo se ejecutan simultáneamente después del bloque de Inicio, maximizando la eficiencia.
### Combinación automática de salidas
Cuando los bloques tienen múltiples dependencias, el motor de ejecución espera automáticamente a que todas las dependencias se completen, y luego proporciona sus salidas combinadas al siguiente bloque. No se requiere combinación manual.
<Image
src="/static/execution/combination.png"
alt="Bloque de función recibiendo automáticamente salidas de múltiples bloques anteriores"
width={800}
height={500}
/>
El bloque de Función recibe las salidas de ambos bloques de agente tan pronto como se completan, permitiéndote procesar los resultados combinados.
### Enrutamiento inteligente
Los flujos de trabajo pueden ramificarse en múltiples direcciones utilizando bloques de enrutamiento. El motor de ejecución admite tanto el enrutamiento determinista (con bloques de Condición) como el enrutamiento basado en IA (con bloques de Router).
<Image
src="/static/execution/routing.png"
alt="Flujo de trabajo mostrando ramificación tanto condicional como basada en router"
width={800}
height={500}
/>
Este flujo de trabajo demuestra cómo la ejecución puede seguir diferentes caminos basados en condiciones o decisiones de IA, con cada camino ejecutándose independientemente.
## Tipos de bloques
Sim proporciona diferentes tipos de bloques que sirven para propósitos específicos en tus flujos de trabajo:
<Cards>
<Card title="Disparadores" href="/triggers">
Los **bloques de inicio** inician flujos de trabajo y los **bloques de Webhook** responden a eventos externos. Cada flujo de trabajo necesita un disparador para comenzar la ejecución.
</Card>
<Card title="Bloques de procesamiento" href="/blocks">
Los **bloques de agente** interactúan con modelos de IA, los **bloques de función** ejecutan código personalizado, y los **bloques de API** conectan con servicios externos. Estos bloques transforman y procesan tus datos.
</Card>
<Card title="Control de flujo" href="/blocks">
Los **bloques de enrutador** usan IA para elegir caminos, los **bloques de condición** ramifican basándose en lógica, y los **bloques de bucle/paralelo** manejan iteraciones y concurrencia.
</Card>
<Card title="Salida y respuesta" href="/blocks">
Los **bloques de respuesta** formatean las salidas finales para APIs e interfaces de chat, devolviendo resultados estructurados de tus flujos de trabajo.
</Card>
</Cards>
Todos los bloques se ejecutan automáticamente basándose en sus dependencias - no necesitas gestionar manualmente el orden de ejecución o el tiempo.
## Disparadores de ejecución
Los flujos de trabajo pueden activarse de varias maneras, dependiendo de tu caso de uso:
### Pruebas manuales
Haz clic en "Ejecutar" en el editor de flujo de trabajo para probar tu flujo de trabajo durante el desarrollo. Perfecto para depuración y validación.
### Ejecución programada
Configura ejecuciones recurrentes usando expresiones cron. Ideal para procesamiento regular de datos, informes o tareas de mantenimiento.
### Despliegue de API
Despliega flujos de trabajo como endpoints HTTP que pueden ser llamados programáticamente desde tus aplicaciones.
### Integración de Webhook
Responde a eventos de servicios externos como GitHub, Stripe o sistemas personalizados en tiempo real.
### Interfaz de chat
Crea interfaces conversacionales alojadas en subdominios personalizados para aplicaciones de IA orientadas al usuario.
<Callout type="info">
Aprende más sobre cada tipo de disparador en la [sección de Disparadores](/triggers) de la documentación.
</Callout>
## Monitoreo de ejecución
Cuando los flujos de trabajo se ejecutan, Sim proporciona visibilidad en tiempo real del proceso de ejecución:
- **Estados de bloques en vivo**: Ve qué bloques se están ejecutando actualmente, cuáles han completado o fallado
- **Registros de ejecución**: Los registros detallados aparecen en tiempo real mostrando entradas, salidas y cualquier error
- **Métricas de rendimiento**: Realiza seguimiento del tiempo de ejecución y costos para cada bloque
- **Visualización de rutas**: Comprende qué rutas de ejecución se tomaron a través de tu flujo de trabajo
<Callout type="info">
Todos los detalles de ejecución son capturados y están disponibles para revisión incluso después de que los flujos de trabajo se completen, ayudando con la depuración y optimización.
</Callout>
## Principios clave de ejecución
Entender estos principios fundamentales te ayudará a construir mejores flujos de trabajo:
1. **Ejecución basada en dependencias**: Los bloques solo se ejecutan cuando todas sus dependencias han completado
2. **Paralelización automática**: Los bloques independientes se ejecutan simultáneamente sin configuración
3. **Flujo inteligente de datos**: Las salidas fluyen automáticamente a los bloques conectados
4. **Manejo de errores**: Los bloques fallidos detienen su ruta de ejecución pero no afectan rutas independientes
5. **Persistencia de estado**: Todas las salidas de bloques y detalles de ejecución se conservan para depuración
## Próximos pasos
Ahora que entiendes los conceptos básicos de ejecución, explora:
- **[Tipos de bloques](/blocks)** - Aprende sobre las capacidades específicas de los bloques
- **[Registro](/execution/logging)** - Monitorea ejecuciones de flujos de trabajo y depura problemas
- **[Cálculo de costos](/execution/costs)** - Comprende y optimiza los costos de flujos de trabajo
- **[Disparadores](/triggers)** - Configura diferentes formas de ejecutar tus flujos de trabajo

View File

@@ -1,186 +0,0 @@
---
title: Cálculo de costos
---
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
Sim calcula automáticamente los costos de todas las ejecuciones de flujos de trabajo, proporcionando precios transparentes basados en el uso de modelos de IA y cargos de ejecución. Entender estos costos te ayuda a optimizar los flujos de trabajo y gestionar tu presupuesto de manera efectiva.
## Cómo se calculan los costos
Cada ejecución de flujo de trabajo incluye dos componentes de costo:
**Cargo base por ejecución**: $0.001 por ejecución
**Uso de modelos de IA**: Costo variable basado en el consumo de tokens
```javascript
modelCost = (inputTokens × inputPrice + outputTokens × outputPrice) / 1,000,000
totalCost = baseExecutionCharge + modelCost
```
<Callout type="info">
Los precios de los modelos de IA son por millón de tokens. El cálculo divide por 1.000.000 para obtener el costo real. Los flujos de trabajo sin bloques de IA solo incurren en el cargo base de ejecución.
</Callout>
## Desglose de modelos en los registros
Para flujos de trabajo que utilizan bloques de IA, puedes ver información detallada de costos en los registros:
<div className="flex justify-center">
<Image
src="/static/logs/logs-cost.png"
alt="Desglose de modelos"
width={600}
height={400}
className="my-6"
/>
</div>
El desglose del modelo muestra:
- **Uso de tokens**: Recuentos de tokens de entrada y salida para cada modelo
- **Desglose de costos**: Costos individuales por modelo y operación
- **Distribución de modelos**: Qué modelos se utilizaron y cuántas veces
- **Costo total**: Costo agregado para toda la ejecución del flujo de trabajo
## Opciones de precios
<Tabs items={['Modelos alojados', 'Trae tu propia clave API']}>
<Tab>
**Modelos alojados** - Sim proporciona claves API con un multiplicador de precio de 2,5x:
| Modelo | Precio base (Entrada/Salida) | Precio alojado (Entrada/Salida) |
|-------|---------------------------|----------------------------|
| GPT-4o | $2.50 / $10.00 | $6.25 / $25.00 |
| GPT-4.1 | $2.00 / $8.00 | $5.00 / $20.00 |
| o1 | $15.00 / $60.00 | $37.50 / $150.00 |
| o3 | $2.00 / $8.00 | $5.00 / $20.00 |
| Claude 3.5 Sonnet | $3.00 / $15.00 | $7.50 / $37.50 |
| Claude Opus 4.0 | $15.00 / $75.00 | $37.50 / $187.50 |
*El multiplicador de 2,5x cubre los costos de infraestructura y gestión de API.*
</Tab>
<Tab>
**Tus propias claves API** - Usa cualquier modelo con precio base:
| Proveedor | Modelos | Entrada / Salida |
|----------|---------|----------------|
| Google | Gemini 2.5 | $0.15 / $0.60 |
| Deepseek | V3, R1 | $0.75 / $1.00 |
| xAI | Grok 4, Grok 3 | $5.00 / $25.00 |
| Groq | Llama 4 Scout | $0.40 / $0.60 |
| Cerebras | Llama 3.3 70B | $0.94 / $0.94 |
| Ollama | Modelos locales | Gratis |
*Paga directamente a los proveedores sin recargo*
</Tab>
</Tabs>
<Callout type="warning">
Los precios mostrados reflejan las tarifas a partir del 10 de septiembre de 2025. Consulta la documentación del proveedor para conocer los precios actuales.
</Callout>
## Estrategias de optimización de costos
<Accordions>
<Accordion title="Selección de modelos">
Elige modelos según la complejidad de la tarea. Las tareas simples pueden usar GPT-4.1-nano ($0.10/$0.40) mientras que el razonamiento complejo podría necesitar o1 o Claude Opus.
</Accordion>
<Accordion title="Ingeniería de prompts">
Los prompts bien estructurados y concisos reducen el uso de tokens sin sacrificar la calidad.
</Accordion>
<Accordion title="Modelos locales">
Usa Ollama para tareas no críticas para eliminar por completo los costos de API.
</Accordion>
<Accordion title="Almacenamiento en caché y reutilización">
Almacena resultados frecuentemente utilizados en variables o archivos para evitar llamadas repetidas al modelo de IA.
</Accordion>
<Accordion title="Procesamiento por lotes">
Procesa múltiples elementos en una sola solicitud de IA en lugar de hacer llamadas individuales.
</Accordion>
</Accordions>
## Monitoreo de uso
Monitorea tu uso y facturación en Configuración → Suscripción:
- **Uso actual**: Uso y costos en tiempo real para el período actual
- **Límites de uso**: Límites del plan con indicadores visuales de progreso
- **Detalles de facturación**: Cargos proyectados y compromisos mínimos
- **Gestión del plan**: Opciones de actualización e historial de facturación
### Seguimiento programático del uso
Puedes consultar tu uso actual y límites de forma programática utilizando la API:
**Endpoint:**
```text
GET /api/users/me/usage-limits
```
**Autenticación:**
- Incluye tu clave API en el encabezado `X-API-Key`
**Ejemplo de solicitud:**
```bash
curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" https://sim.ai/api/users/me/usage-limits
```
**Ejemplo de respuesta:**
```json
{
"success": true,
"rateLimit": {
"sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" },
"async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" },
"authType": "api"
},
"usage": {
"currentPeriodCost": 12.34,
"limit": 100,
"plan": "pro"
}
}
```
**Campos de respuesta:**
- `currentPeriodCost` refleja el uso en el período de facturación actual
- `limit` se deriva de límites individuales (Gratuito/Pro) o límites de organización agrupados (Equipo/Empresa)
- `plan` es el plan activo de mayor prioridad asociado a tu usuario
## Límites del plan
Los diferentes planes de suscripción tienen diferentes límites de uso:
| Plan | Límite de uso mensual | Límites de tasa (por minuto) |
|------|-------------------|-------------------------|
| **Gratuito** | $10 | 5 síncronos, 10 asíncronos |
| **Pro** | $100 | 10 síncronos, 50 asíncronos |
| **Equipo** | $500 (agrupado) | 50 síncronos, 100 asíncronos |
| **Empresa** | Personalizado | Personalizado |
## Mejores prácticas para la gestión de costos
1. **Monitorear regularmente**: Revisa tu panel de uso frecuentemente para evitar sorpresas
2. **Establecer presupuestos**: Utiliza los límites del plan como guías para tu gasto
3. **Optimizar flujos de trabajo**: Revisa las ejecuciones de alto costo y optimiza los prompts o la selección de modelos
4. **Usar modelos apropiados**: Ajusta la complejidad del modelo a los requisitos de la tarea
5. **Agrupar tareas similares**: Combina múltiples solicitudes cuando sea posible para reducir la sobrecarga
## Próximos pasos
- Revisa tu uso actual en [Configuración → Suscripción](https://sim.ai/settings/subscription)
- Aprende sobre [Registro](/execution/logging) para seguir los detalles de ejecución
- Explora la [API externa](/execution/api) para monitoreo programático de costos
- Consulta las [técnicas de optimización de flujo de trabajo](/blocks) para reducir costos

View File

@@ -1,136 +0,0 @@
---
title: Ejecución
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
El motor de ejecución de Sim da vida a tus flujos de trabajo procesando bloques en el orden correcto, gestionando el flujo de datos y manejando errores con elegancia, para que puedas entender exactamente cómo se ejecutan los flujos de trabajo en Sim.
<Callout type="info">
Cada ejecución de flujo de trabajo sigue una ruta determinista basada en tus conexiones de bloques y lógica, asegurando resultados predecibles y confiables.
</Callout>
## Resumen de la documentación
<Cards>
<Card title="Fundamentos de ejecución" href="/execution/basics">
Aprende sobre el flujo de ejecución fundamental, tipos de bloques y cómo fluyen los datos a través de tu
flujo de trabajo
</Card>
<Card title="Registro" href="/execution/logging">
Monitorea las ejecuciones de flujos de trabajo con registro completo y visibilidad en tiempo real
</Card>
<Card title="Cálculo de costos" href="/execution/costs">
Comprende cómo se calculan y optimizan los costos de ejecución de flujos de trabajo
</Card>
<Card title="API externa" href="/execution/api">
Accede a registros de ejecución y configura webhooks programáticamente a través de API REST
</Card>
</Cards>
## Conceptos clave
### Ejecución topológica
Los bloques se ejecutan en orden de dependencia, similar a cómo una hoja de cálculo recalcula celdas. El motor de ejecución determina automáticamente qué bloques pueden ejecutarse basándose en las dependencias completadas.
### Seguimiento de rutas
El motor rastrea activamente las rutas de ejecución a través de tu flujo de trabajo. Los bloques de enrutador y condición actualizan dinámicamente estas rutas, asegurando que solo se ejecuten los bloques relevantes.
### Procesamiento basado en capas
En lugar de ejecutar bloques uno por uno, el motor identifica capas de bloques que pueden ejecutarse en paralelo, optimizando el rendimiento para flujos de trabajo complejos.
### Contexto de ejecución
Cada flujo de trabajo mantiene un contexto enriquecido durante la ejecución que contiene:
- Salidas y estados de bloques
- Rutas de ejecución activas
- Seguimiento de iteraciones de bucle y paralelas
- Variables de entorno
- Decisiones de enrutamiento
## Disparadores de ejecución
Los flujos de trabajo pueden ejecutarse a través de múltiples canales:
- **Manual**: Prueba y depura directamente en el editor
- **Desplegar como API**: Crea un punto de conexión HTTP protegido con claves API
- **Desplegar como Chat**: Crea una interfaz conversacional en un subdominio personalizado
- **Webhooks**: Responde a eventos externos de servicios de terceros
- **Programado**: Ejecuta en un horario recurrente usando expresiones cron
### Desplegar como API
Cuando despliegas un flujo de trabajo como API, Sim:
- Crea un punto de conexión HTTP único: `https://sim.ai/api/workflows/{workflowId}/execute`
- Genera una clave API para autenticación
- Acepta solicitudes POST con cargas útiles JSON
- Devuelve los resultados de ejecución del flujo de trabajo como JSON
Ejemplo de llamada API:
```bash
curl -X POST https://sim.ai/api/workflows/your-workflow-id/execute \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"input": "your data here"}'
```
### Desplegar como Chat
El despliegue de chat crea una interfaz conversacional para tu flujo de trabajo:
- Alojado en un subdominio personalizado: `https://your-name.sim.ai`
- Autenticación opcional (pública, con contraseña o basada en correo electrónico)
- Interfaz de usuario personalizable con tu marca
- Respuestas en streaming para interacción en tiempo real
- Perfecto para asistentes de IA, bots de soporte o herramientas interactivas
Cada método de despliegue pasa datos al bloque inicial de tu flujo de trabajo, comenzando el flujo de ejecución.
## Ejecución programática
Ejecuta flujos de trabajo desde tus aplicaciones usando nuestros SDK oficiales:
```bash
# TypeScript/JavaScript
npm install simstudio-ts-sdk
# Python
pip install simstudio-sdk
```
```typescript
// TypeScript Example
import { SimStudioClient } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: 'your-api-key'
});
const result = await client.executeWorkflow('workflow-id', {
input: { message: 'Hello' }
});
```
## Mejores prácticas
### Diseño para fiabilidad
- Maneja los errores con elegancia mediante rutas de respaldo apropiadas
- Usa variables de entorno para datos sensibles
- Añade registro en bloques de Función para depuración
### Optimiza el rendimiento
- Minimiza las llamadas a API externas cuando sea posible
- Usa ejecución paralela para operaciones independientes
- Almacena en caché los resultados con bloques de Memoria cuando sea apropiado
### Monitorea las ejecuciones
- Revisa los registros regularmente para entender patrones de rendimiento
- Realiza seguimiento de costos para el uso de modelos de IA
- Usa instantáneas de flujo de trabajo para depurar problemas
## ¿Qué sigue?
Comienza con [Conceptos básicos de ejecución](/execution/basics) para entender cómo funcionan los flujos de trabajo, luego explora [Registro](/execution/logging) para monitorear tus ejecuciones y [Cálculo de costos](/execution/costs) para optimizar tu gasto.

View File

@@ -1,150 +0,0 @@
---
title: Registro
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
Sim proporciona un registro completo para todas las ejecuciones de flujos de trabajo, dándote visibilidad total sobre cómo se ejecutan tus flujos de trabajo, qué datos fluyen a través de ellos y dónde podrían ocurrir problemas.
## Sistema de registro
Sim ofrece dos interfaces de registro complementarias para adaptarse a diferentes flujos de trabajo y casos de uso:
### Consola en tiempo real
Durante la ejecución manual o por chat del flujo de trabajo, los registros aparecen en tiempo real en el panel de Consola en el lado derecho del editor de flujo de trabajo:
<div className="flex justify-center">
<Image
src="/static/logs/console.png"
alt="Panel de consola en tiempo real"
width={400}
height={300}
className="my-6"
/>
</div>
La consola muestra:
- Progreso de ejecución de bloques con resaltado del bloque activo
- Resultados en tiempo real a medida que se completan los bloques
- Tiempo de ejecución para cada bloque
- Indicadores de estado de éxito/error
### Página de registros
Todas las ejecuciones de flujos de trabajo, ya sean activadas manualmente, a través de API, Chat, Programación o Webhook, se registran en la página dedicada de Registros:
<div className="flex justify-center">
<Image
src="/static/logs/logs.png"
alt="Página de registros"
width={600}
height={400}
className="my-6"
/>
</div>
La página de Registros proporciona:
- Filtrado completo por rango de tiempo, estado, tipo de activación, carpeta y flujo de trabajo
- Funcionalidad de búsqueda en todos los registros
- Modo en vivo para actualizaciones en tiempo real
- Retención de registros de 7 días (ampliable para una retención más larga)
## Barra lateral de detalles de registro
Al hacer clic en cualquier entrada de registro se abre una vista detallada en la barra lateral:
<div className="flex justify-center">
<Image
src="/static/logs/logs-sidebar.png"
alt="Detalles de la barra lateral de registros"
width={600}
height={400}
className="my-6"
/>
</div>
### Entrada/Salida de bloque
Visualiza el flujo de datos completo para cada bloque con pestañas para cambiar entre:
<Tabs items={['Output', 'Input']}>
<Tab>
**Pestaña de salida** muestra el resultado de la ejecución del bloque:
- Datos estructurados con formato JSON
- Renderizado de Markdown para contenido generado por IA
- Botón de copiar para fácil extracción de datos
</Tab>
<Tab>
**Pestaña de entrada** muestra lo que se pasó al bloque:
- Valores de variables resueltos
- Salidas referenciadas de otros bloques
- Variables de entorno utilizadas
- Las claves API se redactan automáticamente por seguridad
</Tab>
</Tabs>
### Cronología de ejecución
Para los registros a nivel de flujo de trabajo, visualiza métricas detalladas de ejecución:
- Marcas de tiempo de inicio y fin
- Duración total del flujo de trabajo
- Tiempos de ejecución de bloques individuales
- Identificación de cuellos de botella de rendimiento
## Instantáneas del flujo de trabajo
Para cualquier ejecución registrada, haz clic en "Ver instantánea" para ver el estado exacto del flujo de trabajo en el momento de la ejecución:
<div className="flex justify-center">
<Image
src="/static/logs/logs-frozen-canvas.png"
alt="Instantánea del flujo de trabajo"
width={600}
height={400}
className="my-6"
/>
</div>
La instantánea proporciona:
- Lienzo congelado que muestra la estructura del flujo de trabajo
- Estados de los bloques y conexiones tal como estaban durante la ejecución
- Haz clic en cualquier bloque para ver sus entradas y salidas
- Útil para depurar flujos de trabajo que han sido modificados desde entonces
<Callout type="info">
Las instantáneas de flujo de trabajo solo están disponibles para ejecuciones posteriores a la introducción del sistema mejorado de registro. Los registros migrados más antiguos muestran un mensaje de "Estado registrado no encontrado".
</Callout>
## Retención de registros
- **Plan gratuito**: 7 días de retención de registros
- **Plan pro**: 30 días de retención de registros
- **Plan de equipo**: 90 días de retención de registros
- **Plan empresarial**: Períodos de retención personalizados disponibles
## Mejores prácticas
### Para desarrollo
- Utiliza la consola en tiempo real para obtener retroalimentación inmediata durante las pruebas
- Verifica las entradas y salidas de los bloques para comprobar el flujo de datos
- Usa instantáneas del flujo de trabajo para comparar versiones funcionales vs. defectuosas
### Para producción
- Supervisa regularmente la página de registros para detectar errores o problemas de rendimiento
- Configura filtros para centrarte en flujos de trabajo específicos o períodos de tiempo
- Utiliza el modo en vivo durante implementaciones críticas para observar las ejecuciones en tiempo real
### Para depuración
- Siempre verifica la cronología de ejecución para identificar bloques lentos
- Compara las entradas entre ejecuciones exitosas y fallidas
- Utiliza instantáneas del flujo de trabajo para ver el estado exacto cuando ocurrieron los problemas
## Próximos pasos
- Aprende sobre [Cálculo de costos](/execution/costs) para entender los precios de los flujos de trabajo
- Explora la [API externa](/execution/api) para acceso programático a los registros
- Configura [notificaciones por Webhook](/execution/api#webhook-subscriptions) para alertas en tiempo real

View File

@@ -1,193 +0,0 @@
---
title: Primeros pasos
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { File, Files, Folder } from 'fumadocs-ui/components/files'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import {
AgentIcon,
ApiIcon,
ChartBarIcon,
CodeIcon,
ConditionalIcon,
ConnectIcon,
ExaAIIcon,
FirecrawlIcon,
GmailIcon,
NotionIcon,
PerplexityIcon,
SlackIcon,
} from '@/components/icons'
import { Video } from '@/components/ui/video'
import { Image } from '@/components/ui/image'
Este tutorial te guiará en la creación de tu primer flujo de trabajo de IA en Sim. Crearemos un agente de investigación de personas que puede encontrar información sobre individuos utilizando herramientas de búsqueda LLM de última generación.
<Callout type="info">
Este tutorial dura aproximadamente 10 minutos y cubre los conceptos esenciales para crear flujos de trabajo en Sim.
</Callout>
## Lo que vamos a construir
Un agente de investigación de personas que:
1. Recibe el nombre de una persona a través de la interfaz de chat
2. Utiliza un agente de IA con capacidades avanzadas de búsqueda
3. Busca en la web utilizando herramientas de búsqueda LLM de última generación (Exa y Linkup)
4. Extrae información estructurada utilizando un formato de respuesta
5. Devuelve datos completos sobre la persona
<Image
src="/static/getting-started/started-1.png"
alt="Ejemplo de primeros pasos"
width={800}
height={500}
/>
## Tutorial paso a paso
<Steps>
<Step title="Crear flujo de trabajo y añadir agente de IA">
Abre Sim y haz clic en "Nuevo flujo de trabajo" en el panel de control. Nómbralo "Primeros pasos".
Cuando creas un nuevo flujo de trabajo, automáticamente incluye un **bloque de Inicio** - este es el punto de entrada que recibe la entrada de los usuarios. Para este ejemplo, activaremos el flujo de trabajo a través del chat, así que no necesitamos configurar nada en el bloque de Inicio.
Ahora arrastra un **Bloque de Agente** al lienzo desde el panel de bloques a la izquierda.
Configura el Bloque de Agente:
- **Modelo**: Selecciona "OpenAI GPT-4o"
- **Prompt del sistema**: "Eres un agente de investigación de personas. Cuando te den el nombre de una persona, utiliza tus herramientas de búsqueda disponibles para encontrar información completa sobre ellos, incluyendo su ubicación, profesión, formación académica y otros detalles relevantes".
- **Prompt del usuario**: Arrastra la conexión desde la salida del bloque de Inicio a este campo (esto conecta `<start.input>` al prompt del usuario)
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="getting-started/started-2.mp4" width={700} height={450} />
</div>
</Step>
<Step title="Añadir herramientas al agente">
Vamos a mejorar nuestro agente con herramientas para obtener mejores capacidades. Haz clic en el bloque de Agente para seleccionarlo.
En la sección de **Herramientas**:
- Haz clic en **Añadir herramienta**
- Selecciona **Exa** de las herramientas disponibles
- Selecciona **Linkup** de las herramientas disponibles
- Añade tus claves API para ambas herramientas (esto permite al agente buscar en la web y acceder a información adicional)
<div className="mx-auto w-3/5 overflow-hidden rounded-lg">
<Video src="getting-started/started-3.mp4" width={700} height={450} />
</div>
</Step>
<Step title="Probar el flujo de trabajo básico">
Ahora vamos a probar nuestro flujo de trabajo. Ve al **panel de Chat** en el lado derecho de la pantalla.
En el panel de chat:
- Haz clic en el menú desplegable y selecciona `agent1.content` (esto nos mostrará la salida de nuestro agente)
- Introduce un mensaje de prueba como: "John es un ingeniero de software de San Francisco que estudió Informática en la Universidad de Stanford".
- Haz clic en "Enviar" para ejecutar el flujo de trabajo
Deberías ver la respuesta del agente analizando a la persona descrita en tu texto.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="getting-started/started-4.mp4" width={700} height={450} />
</div>
</Step>
<Step title="Añadir salida estructurada">
Ahora hagamos que nuestro agente devuelva datos estructurados. Haz clic en el bloque de Agente para seleccionarlo.
En la sección de **Formato de respuesta**:
- Haz clic en el **icono de varita mágica** (✨) junto al campo de esquema
- En el prompt que aparece, escribe: "crear un esquema llamado persona, que contenga ubicación, profesión y educación"
- La IA generará automáticamente un esquema JSON para ti
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="getting-started/started-5.mp4" width={700} height={450} />
</div>
</Step>
<Step title="Probar la salida estructurada">
Vuelve al **panel de Chat**.
Como hemos añadido un formato de respuesta, ahora hay nuevas opciones de salida disponibles:
- Haz clic en el menú desplegable y selecciona la nueva opción de salida estructurada (el esquema que acabamos de crear)
- Introduce un nuevo mensaje de prueba como: "Sarah es una gerente de marketing de Nueva York que tiene un MBA de la Escuela de Negocios de Harvard".
- Haz clic en "Enviar" para ejecutar el flujo de trabajo de nuevo
Ahora deberías ver una salida JSON estructurada con la información de la persona organizada en campos de ubicación, profesión y educación.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="getting-started/started-6.mp4" width={700} height={450} />
</div>
</Step>
</Steps>
## Lo que acabas de construir
¡Felicidades! Has creado tu primer flujo de trabajo de IA que:
- ✅ Recibe entrada de texto a través de la interfaz de chat
- ✅ Utiliza IA para extraer información de texto no estructurado
- ✅ Integra herramientas externas (Exa y Linkup) para capacidades mejoradas
- ✅ Devuelve datos JSON estructurados utilizando esquemas generados por IA
- ✅ Demuestra pruebas e iteración de flujos de trabajo
- ✅ Muestra el poder de la construcción visual de flujos de trabajo
## Conceptos clave que has aprendido
### Tipos de bloques utilizados
<Files>
<File
name="Bloque de inicio"
icon={<ConnectIcon className="h-4 w-4" />}
annotation="Punto de entrada para la entrada del usuario (incluido automáticamente)"
/>
<File
name="Bloque de agente"
icon={<AgentIcon className="h-4 w-4" />}
annotation="Modelo de IA para procesamiento y análisis de texto"
/>
</Files>
### Conceptos fundamentales del flujo de trabajo
**Flujo de datos**: Las variables fluyen entre bloques arrastrando conexiones
**Interfaz de chat**: Prueba flujos de trabajo en tiempo real usando el panel de chat con diferentes opciones de salida
**Integración de herramientas**: Mejora las capacidades del agente añadiendo herramientas externas como Exa y Linkup
**Referencias de variables**: Accede a las salidas de los bloques usando la sintaxis `<blockName.output>`
**Salida estructurada**: Utiliza esquemas JSON para obtener datos consistentes y estructurados de la IA
**Esquemas generados por IA**: Usa la varita mágica (✨) para generar esquemas con lenguaje natural
**Desarrollo iterativo**: Prueba, modifica y vuelve a probar flujos de trabajo fácilmente
## Próximos pasos
<Cards>
<Card title="Añadir más bloques" href="/blocks">
Aprende sobre bloques de API, Función y Condición
</Card>
<Card title="Usar herramientas" href="/tools">
Integra con servicios externos como Gmail, Slack y Notion
</Card>
<Card title="Añadir lógica personalizada" href="/blocks/function">
Usa bloques de Función para procesamiento personalizado de datos
</Card>
<Card title="Implementar tu flujo de trabajo" href="/execution">
Haz que tu flujo de trabajo sea accesible a través de API REST
</Card>
</Cards>
## ¿Necesitas ayuda?
**¿Atascado en algún paso?** Consulta nuestra [documentación de Bloques](/blocks) para explicaciones detalladas de cada componente.
**¿Quieres ver más ejemplos?** Explora nuestra [documentación de Herramientas](/tools) para ver qué integraciones están disponibles.
**¿Listo para implementar?** Aprende sobre [Ejecución e Implementación](/execution) para activar tus flujos de trabajo.

View File

@@ -1,60 +0,0 @@
---
title: Documentación
---
import { Card, Cards } from 'fumadocs-ui/components/card'
# Documentación de Sim
Bienvenido a Sim, un constructor visual de flujos de trabajo para aplicaciones de IA. Crea potentes agentes de IA, flujos de trabajo de automatización y canales de procesamiento de datos conectando bloques en un lienzo.
## Inicio rápido
<Cards>
<Card title="Introducción" href="/introduction">
Aprende lo que puedes construir con Sim
</Card>
<Card title="Primeros pasos" href="/getting-started">
Crea tu primer flujo de trabajo en 10 minutos
</Card>
<Card title="Bloques de flujo de trabajo" href="/blocks">
Aprende sobre los bloques de construcción
</Card>
<Card title="Herramientas e integraciones" href="/tools">
Explora más de 80 integraciones incorporadas
</Card>
</Cards>
## Conceptos fundamentales
<Cards>
<Card title="Conexiones" href="/connections">
Comprende cómo fluyen los datos entre bloques
</Card>
<Card title="Variables" href="/variables">
Trabaja con variables de flujo de trabajo y de entorno
</Card>
<Card title="Ejecución" href="/execution">
Monitoriza las ejecuciones de flujos de trabajo y gestiona costos
</Card>
<Card title="Disparadores" href="/triggers">
Inicia flujos de trabajo mediante API, webhooks o programaciones
</Card>
</Cards>
## Características avanzadas
<Cards>
<Card title="Gestión de equipos" href="/permissions/roles-and-permissions">
Configura roles y permisos de espacio de trabajo
</Card>
<Card title="Configuración YAML" href="/yaml">
Define flujos de trabajo como código
</Card>
<Card title="Integración MCP" href="/mcp">
Conecta servicios externos con el Protocolo de Contexto de Modelo
</Card>
<Card title="SDKs" href="/sdks">
Integra Sim en tus aplicaciones
</Card>
</Cards>

View File

@@ -1,93 +0,0 @@
---
title: Introducción
---
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Callout } from 'fumadocs-ui/components/callout'
import { Image } from '@/components/ui/image'
Sim es un constructor visual de flujos de trabajo para aplicaciones de IA que te permite crear flujos de trabajo de agentes de IA de forma visual. Crea agentes de IA potentes, flujos de trabajo de automatización y pipelines de procesamiento de datos conectando bloques en un lienzo—sin necesidad de código.
<div className="flex justify-center">
<Image
src="/static/introduction.png"
alt="Lienzo visual de flujos de trabajo de Sim"
width={700}
height={450}
className="my-6"
/>
</div>
## Lo Que Puedes Crear
**Asistentes de IA y Chatbots**
Crea agentes inteligentes que pueden buscar en la web, acceder a tu calendario, enviar correos electrónicos e interactuar con tus herramientas de negocio.
**Automatización de Procesos de Negocio**
Automatiza tareas repetitivas como entrada de datos, generación de informes, respuestas de soporte al cliente y creación de contenido.
**Procesamiento y Análisis de Datos**
Extrae información de documentos, analiza conjuntos de datos, genera informes y sincroniza datos entre sistemas.
**Flujos de Trabajo de Integración de API**
Conecta múltiples servicios en endpoints unificados, orquesta lógica de negocio compleja y maneja automatización basada en eventos.
## Cómo Funciona
**Lienzo Visual**
Arrastra y suelta bloques para crear flujos de trabajo. Conecta modelos de IA, bases de datos, APIs y herramientas de negocio con conexiones simples de apuntar y hacer clic.
**Bloques Inteligentes**
Elige entre bloques de procesamiento (agentes de IA, APIs, funciones), bloques de lógica (condiciones, bucles, enrutadores) y bloques de salida (respuestas, evaluadores).
**Múltiples Disparadores**
Inicia flujos de trabajo a través de interfaz de chat, API REST, webhooks, trabajos programados o eventos externos de servicios como Slack y GitHub.
**Colaboración en Equipo**
Trabaja simultáneamente con miembros del equipo en el mismo flujo de trabajo con edición en tiempo real y gestión de permisos.
## Próximos Pasos
¿Listo para crear tu primer flujo de trabajo de IA?
<Cards>
<Card title="Primeros Pasos" href="/getting-started">
Crea tu primer flujo de trabajo en 10 minutos
</Card>
<Card title="Bloques de Flujo de Trabajo" href="/blocks">
Aprende sobre los bloques de construcción
</Card>
<Card title="Herramientas e Integraciones" href="/tools">
Explora más de 60 integraciones integradas
</Card>
<Card title="Permisos de Equipo" href="/permissions/roles-and-permissions">
Configura roles y permisos del espacio de trabajo
</Card>
</Cards>
¿Necesitas algo personalizado? Usa nuestra [integración MCP](/mcp) para conectar cualquier servicio externo.
## Opciones de implementación
**Alojado en la nube**: Comienza al instante en [sim.ai](https://sim.ai) con infraestructura gestionada, escalado automático y monitorización integrada.
**Autoalojado**: Implementa en tu propia infraestructura usando Docker, con soporte para modelos de IA locales a través de Ollama para una privacidad completa de datos.
## Próximos pasos
¿Listo para construir tu primer flujo de trabajo de IA?
<Cards>
<Card title="Primeros pasos" href="/getting-started">
Crea tu primer flujo de trabajo en 10 minutos
</Card>
<Card title="Bloques de flujo de trabajo" href="/blocks">
Aprende sobre los componentes básicos
</Card>
<Card title="Herramientas e integraciones" href="/tools">
Explora más de 60 integraciones incorporadas
</Card>
<Card title="Permisos de equipo" href="/permissions/roles-and-permissions">
Configura roles y permisos del espacio de trabajo
</Card>
</Cards>

View File

@@ -1,113 +0,0 @@
---
title: Base de conocimientos
---
import { Video } from '@/components/ui/video'
import { Image } from '@/components/ui/image'
La base de conocimientos te permite cargar, procesar y buscar a través de tus documentos con búsqueda vectorial inteligente y fragmentación. Los documentos de varios tipos se procesan, incorporan y hacen buscables automáticamente. Tus documentos se fragmentan de manera inteligente, y puedes verlos, editarlos y buscar a través de ellos utilizando consultas en lenguaje natural.
## Carga y procesamiento
Simplemente carga tus documentos para comenzar. Sim los procesa automáticamente en segundo plano, extrayendo texto, creando incrustaciones y dividiéndolos en fragmentos buscables.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="knowledgebase-1.mp4" width={700} height={450} />
</div>
El sistema maneja todo el proceso por ti:
1. **Extracción de texto**: El contenido se extrae de tus documentos utilizando analizadores especializados para cada tipo de archivo
2. **Fragmentación inteligente**: Los documentos se dividen en fragmentos significativos con tamaño y superposición configurables
3. **Generación de incrustaciones**: Se crean incrustaciones vectoriales para capacidades de búsqueda semántica
4. **Estado del procesamiento**: Sigue el progreso mientras tus documentos son procesados
## Tipos de archivos compatibles
Sim admite archivos PDF, Word (DOC/DOCX), texto plano (TXT), Markdown (MD), HTML, Excel (XLS/XLSX), PowerPoint (PPT/PPTX) y CSV. Los archivos pueden tener hasta 100MB cada uno, con un rendimiento óptimo para archivos de menos de 50MB. Puedes cargar múltiples documentos simultáneamente, y los archivos PDF incluyen procesamiento OCR para documentos escaneados.
## Visualización y edición de fragmentos
Una vez que tus documentos están procesados, puedes ver y editar los fragmentos individuales. Esto te da control total sobre cómo se organiza y busca tu contenido.
<Image src="/static/knowledgebase/knowledgebase.png" alt="Vista de fragmentos de documentos mostrando contenido procesado" width={800} height={500} />
### Configuración de fragmentos
- **Tamaño predeterminado del fragmento**: 1.024 caracteres
- **Rango configurable**: 100-4.000 caracteres por fragmento
- **Superposición inteligente**: 200 caracteres por defecto para preservar el contexto
- **División jerárquica**: Respeta la estructura del documento (secciones, párrafos, oraciones)
### Capacidades de edición
- **Editar contenido de fragmentos**: Modificar el contenido de texto de fragmentos individuales
- **Ajustar límites de fragmentos**: Fusionar o dividir fragmentos según sea necesario
- **Añadir metadatos**: Mejorar fragmentos con contexto adicional
- **Operaciones masivas**: Gestionar múltiples fragmentos de manera eficiente
## Procesamiento avanzado de PDF
Para documentos PDF, Sim ofrece capacidades de procesamiento mejoradas:
### Soporte OCR
Cuando se configura con Azure o [Mistral OCR](https://docs.mistral.ai/ocr/):
- **Procesamiento de documentos escaneados**: Extraer texto de PDFs basados en imágenes
- **Manejo de contenido mixto**: Procesar PDFs con texto e imágenes
- **Alta precisión**: Modelos avanzados de IA aseguran una extracción precisa del texto
## Uso del bloque de conocimiento en flujos de trabajo
Una vez que tus documentos son procesados, puedes utilizarlos en tus flujos de trabajo de IA a través del bloque de Conocimiento. Esto permite la Generación Aumentada por Recuperación (RAG), permitiendo a tus agentes de IA acceder y razonar sobre el contenido de tus documentos para proporcionar respuestas más precisas y contextuales.
<Image src="/static/knowledgebase/knowledgebase-2.png" alt="Uso del bloque de conocimiento en flujos de trabajo" width={800} height={500} />
### Características del bloque de conocimiento
- **Búsqueda semántica**: Encontrar contenido relevante usando consultas en lenguaje natural
- **Integración de contexto**: Incluir automáticamente fragmentos relevantes en los prompts del agente
- **Recuperación dinámica**: La búsqueda ocurre en tiempo real durante la ejecución del flujo de trabajo
- **Puntuación de relevancia**: Resultados clasificados por similitud semántica
### Opciones de integración
- **Prompts del sistema**: Proporcionar contexto a tus agentes de IA
- **Contexto dinámico**: Buscar e incluir información relevante durante las conversaciones
- **Búsqueda multi-documento**: Consultar a través de toda tu base de conocimiento
- **Búsqueda filtrada**: Combinar con etiquetas para una recuperación precisa de contenido
## Tecnología de búsqueda vectorial
Sim utiliza búsqueda vectorial impulsada por [pgvector](https://github.com/pgvector/pgvector) para entender el significado y contexto de tu contenido:
### Comprensión semántica
- **Búsqueda contextual**: Encuentra contenido relevante incluso cuando las palabras clave exactas no coinciden
- **Recuperación basada en conceptos**: Comprende las relaciones entre ideas
- **Soporte multilingüe**: Funciona en diferentes idiomas
- **Reconocimiento de sinónimos**: Encuentra términos y conceptos relacionados
### Capacidades de búsqueda
- **Consultas en lenguaje natural**: Haz preguntas en español simple
- **Búsqueda por similitud**: Encuentra contenido conceptualmente similar
- **Búsqueda híbrida**: Combina búsqueda vectorial y tradicional por palabras clave
- **Resultados configurables**: Controla el número y umbral de relevancia de los resultados
## Gestión de documentos
### Características de organización
- **Carga masiva**: Sube múltiples archivos a la vez mediante la API asíncrona
- **Estado de procesamiento**: Actualizaciones en tiempo real sobre el procesamiento de documentos
- **Búsqueda y filtrado**: Encuentra documentos rápidamente en grandes colecciones
- **Seguimiento de metadatos**: Captura automática de información de archivos y detalles de procesamiento
### Seguridad y privacidad
- **Almacenamiento seguro**: Documentos almacenados con seguridad de nivel empresarial
- **Control de acceso**: Permisos basados en espacios de trabajo
- **Aislamiento de procesamiento**: Cada espacio de trabajo tiene procesamiento de documentos aislado
- **Retención de datos**: Configura políticas de retención de documentos
## Primeros pasos
1. **Navega a tu base de conocimiento**: Accede desde la barra lateral de tu espacio de trabajo
2. **Sube documentos**: Arrastra y suelta o selecciona archivos para subir
3. **Monitorea el procesamiento**: Observa cómo se procesan y dividen los documentos
4. **Explora fragmentos**: Visualiza y edita el contenido procesado
5. **Añade a flujos de trabajo**: Usa el bloque de Conocimiento para integrarlo con tus agentes de IA
La base de conocimiento transforma tus documentos estáticos en un recurso inteligente y consultable que tus flujos de trabajo de IA pueden aprovechar para obtener respuestas más informadas y contextuales.

View File

@@ -1,108 +0,0 @@
---
title: Etiquetas y filtrado
---
import { Video } from '@/components/ui/video'
Las etiquetas proporcionan una forma poderosa de organizar tus documentos y crear filtros precisos para tus búsquedas vectoriales. Al combinar el filtrado basado en etiquetas con la búsqueda semántica, puedes recuperar exactamente el contenido que necesitas de tu base de conocimientos.
## Añadir etiquetas a documentos
Puedes añadir etiquetas personalizadas a cualquier documento en tu base de conocimientos para organizar y categorizar tu contenido para una recuperación más fácil.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="knowledgebase-tag.mp4" width={700} height={450} />
</div>
### Gestión de etiquetas
- **Etiquetas personalizadas**: Crea tu propio sistema de etiquetas que se adapte a tu flujo de trabajo
- **Múltiples etiquetas por documento**: Aplica tantas etiquetas como necesites a cada documento, hay 7 espacios para etiquetas disponibles por base de conocimientos que son compartidos por todos los documentos en la base de conocimientos
- **Organización de etiquetas**: Agrupa documentos relacionados con un etiquetado consistente
### Mejores prácticas para etiquetas
- **Nomenclatura consistente**: Usa nombres de etiquetas estandarizados en todos tus documentos
- **Etiquetas descriptivas**: Utiliza nombres de etiquetas claros y significativos
- **Limpieza regular**: Elimina periódicamente las etiquetas no utilizadas u obsoletas
## Uso de etiquetas en bloques de conocimiento
Las etiquetas se vuelven poderosas cuando se combinan con el bloque de Conocimiento en tus flujos de trabajo. Puedes filtrar tus búsquedas a contenido específico etiquetado, asegurando que tus agentes de IA obtengan la información más relevante.
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="knowledgebase-tag2.mp4" width={700} height={450} />
</div>
## Modos de búsqueda
El bloque de Conocimiento admite tres modos diferentes de búsqueda dependiendo de lo que proporciones:
### 1. Búsqueda solo por etiquetas
Cuando **solo proporcionas etiquetas** (sin consulta de búsqueda):
- **Recuperación directa**: Obtiene todos los documentos que tienen las etiquetas especificadas
- **Sin búsqueda vectorial**: Los resultados se basan puramente en la coincidencia de etiquetas
- **Rendimiento rápido**: Recuperación rápida sin procesamiento semántico
- **Coincidencia exacta**: Solo se devuelven documentos con todas las etiquetas especificadas
**Caso de uso**: Cuando necesitas todos los documentos de una categoría o proyecto específico
### 2. Solo búsqueda vectorial
Cuando **solo proporcionas una consulta de búsqueda** (sin etiquetas):
- **Búsqueda semántica**: Encuentra contenido basado en significado y contexto
- **Base de conocimiento completa**: Busca en todos los documentos
- **Clasificación por relevancia**: Resultados ordenados por similitud semántica
- **Lenguaje natural**: Usa preguntas o frases para encontrar contenido relevante
**Caso de uso**: Cuando necesitas el contenido más relevante independientemente de la organización
### 3. Combinación de filtrado por etiquetas + búsqueda vectorial
Cuando **proporcionas tanto etiquetas como una consulta de búsqueda**:
1. **Primero**: Filtra documentos solo a aquellos con las etiquetas especificadas
2. **Luego**: Realiza una búsqueda vectorial dentro de ese subconjunto filtrado
3. **Resultado**: Contenido semánticamente relevante solo de tus documentos etiquetados
**Caso de uso**: Cuando necesitas contenido relevante de una categoría o proyecto específico
### Configuración de búsqueda
#### Filtrado por etiquetas
- **Múltiples etiquetas**: Usa múltiples etiquetas para lógica OR (el documento debe tener una o más de las etiquetas)
- **Combinaciones de etiquetas**: Mezcla diferentes tipos de etiquetas para un filtrado preciso
- **Sensibilidad a mayúsculas**: La coincidencia de etiquetas no distingue entre mayúsculas y minúsculas
- **Coincidencia parcial**: Se requiere coincidencia exacta del nombre de la etiqueta
#### Parámetros de búsqueda vectorial
- **Complejidad de consulta**: Las preguntas en lenguaje natural funcionan mejor
- **Límites de resultados**: Configura cuántos fragmentos recuperar
- **Umbral de relevancia**: Establece puntuaciones mínimas de similitud
- **Ventana de contexto**: Ajusta el tamaño del fragmento para tu caso de uso
## Integración con flujos de trabajo
### Configuración del bloque de conocimiento
1. **Seleccionar base de conocimiento**: Elige qué base de conocimiento buscar
2. **Añadir etiquetas**: Especifica etiquetas de filtrado (opcional)
3. **Introducir consulta**: Añade tu consulta de búsqueda (opcional)
4. **Configurar resultados**: Establece el número de fragmentos a recuperar
5. **Probar búsqueda**: Vista previa de resultados antes de usar en el flujo de trabajo
### Uso dinámico de etiquetas
- **Etiquetas variables**: Usa variables de flujo de trabajo como valores de etiquetas
- **Filtrado condicional**: Aplica diferentes etiquetas según la lógica del flujo de trabajo
- **Búsqueda contextual**: Ajusta las etiquetas según el contexto de la conversación
- **Filtrado en múltiples pasos**: Refina las búsquedas a través de los pasos del flujo de trabajo
### Optimización del rendimiento
- **Filtrado eficiente**: El filtrado por etiquetas ocurre antes de la búsqueda vectorial para un mejor rendimiento
- **Almacenamiento en caché**: Las combinaciones de etiquetas utilizadas con frecuencia se almacenan en caché para mayor velocidad
- **Procesamiento paralelo**: Múltiples búsquedas de etiquetas pueden ejecutarse simultáneamente
- **Gestión de recursos**: Optimización automática de los recursos de búsqueda
## Primeros pasos con etiquetas
1. **Planifica tu estructura de etiquetas**: Decide convenciones de nomenclatura consistentes
2. **Comienza a etiquetar**: Añade etiquetas relevantes a tus documentos existentes
3. **Prueba combinaciones**: Experimenta con combinaciones de etiquetas + consultas de búsqueda
4. **Integra en flujos de trabajo**: Usa el bloque de Conocimiento con tu estrategia de etiquetado
5. **Refina con el tiempo**: Ajusta tu enfoque de etiquetado basándote en los resultados de búsqueda
Las etiquetas transforman tu base de conocimiento de un simple almacén de documentos a un sistema de inteligencia organizado con precisión que tus flujos de trabajo de IA pueden navegar con precisión quirúrgica.

View File

@@ -1,140 +0,0 @@
---
title: MCP (Protocolo de Contexto de Modelo)
---
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
El Protocolo de Contexto de Modelo ([MCP](https://modelcontextprotocol.com/)) te permite conectar herramientas y servicios externos utilizando un protocolo estandarizado, permitiéndote integrar APIs y servicios directamente en tus flujos de trabajo. Con MCP, puedes ampliar las capacidades de Sim añadiendo integraciones personalizadas que funcionan perfectamente con tus agentes y flujos de trabajo.
## ¿Qué es MCP?
MCP es un estándar abierto que permite a los asistentes de IA conectarse de forma segura a fuentes de datos y herramientas externas. Proporciona una forma estandarizada para:
- Conectar a bases de datos, APIs y sistemas de archivos
- Acceder a datos en tiempo real desde servicios externos
- Ejecutar herramientas y scripts personalizados
- Mantener un acceso seguro y controlado a recursos externos
## Añadir servidores MCP
Los servidores MCP proporcionan colecciones de herramientas que tus agentes pueden utilizar. Puedes añadir servidores MCP de dos maneras:
### Desde la configuración del espacio de trabajo
Configura los servidores MCP a nivel de espacio de trabajo para que todos los miembros del equipo puedan utilizarlos:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp-1.mp4" width={700} height={450} />
</div>
1. Navega a la configuración de tu espacio de trabajo
2. Ve a la sección **Servidores MCP**
3. Haz clic en **Añadir servidor MCP**
4. Introduce los detalles de configuración del servidor
5. Guarda la configuración
<Callout type="info">
Los servidores MCP configurados en la configuración del espacio de trabajo están disponibles para todos los miembros del espacio de trabajo según sus niveles de permisos.
</Callout>
### Desde la configuración del agente
También puedes añadir y configurar servidores MCP directamente desde un bloque de agente:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp-2.mp4" width={700} height={450} />
</div>
Esto es útil cuando necesitas configurar rápidamente una integración específica para un flujo de trabajo particular.
## Uso de herramientas MCP en agentes
Una vez que los servidores MCP están configurados, sus herramientas quedan disponibles dentro de tus bloques de agente:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp-3.mp4" width={700} height={450} />
</div>
1. Abre un bloque de **Agente**
2. En la sección de **Herramientas**, verás las herramientas MCP disponibles
3. Selecciona las herramientas que quieres que el agente utilice
4. El agente ahora puede acceder a estas herramientas durante la ejecución
## Bloque de herramienta MCP independiente
Para un control más preciso, puedes usar el bloque dedicado de herramienta MCP para ejecutar herramientas MCP específicas:
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="mcp-4.mp4" width={700} height={450} />
</div>
El bloque de herramienta MCP te permite:
- Ejecutar cualquier herramienta MCP configurada directamente
- Pasar parámetros específicos a la herramienta
- Usar la salida de la herramienta en pasos posteriores del flujo de trabajo
- Encadenar múltiples herramientas MCP
### Cuándo usar herramienta MCP vs agente
**Usa el agente con herramientas MCP cuando:**
- Quieres que la IA decida qué herramientas usar
- Necesitas un razonamiento complejo sobre cuándo y cómo usar las herramientas
- Deseas una interacción en lenguaje natural con las herramientas
**Usa el bloque de herramienta MCP cuando:**
- Necesitas una ejecución determinista de herramientas
- Quieres ejecutar una herramienta específica con parámetros conocidos
- Estás construyendo flujos de trabajo estructurados con pasos predecibles
## Requisitos de permisos
La funcionalidad MCP requiere permisos específicos del espacio de trabajo:
| Acción | Permiso requerido |
|--------|-------------------|
| Configurar servidores MCP en ajustes | **Admin** |
| Usar herramientas MCP en agentes | **Write** o **Admin** |
| Ver herramientas MCP disponibles | **Read**, **Write**, o **Admin** |
| Ejecutar bloques de herramienta MCP | **Write** o **Admin** |
## Casos de uso comunes
### Integración de bases de datos
Conéctate a bases de datos para consultar, insertar o actualizar datos dentro de tus flujos de trabajo.
### Integraciones de API
Accede a APIs externas y servicios web que no tienen integraciones Sim incorporadas.
### Acceso al sistema de archivos
Lee, escribe y manipula archivos en sistemas de archivos locales o remotos.
### Lógica de negocio personalizada
Ejecuta scripts o herramientas personalizadas específicas para las necesidades de tu organización.
### Acceso a datos en tiempo real
Obtén datos en vivo de sistemas externos durante la ejecución del flujo de trabajo.
## Consideraciones de seguridad
- Los servidores MCP se ejecutan con los permisos del usuario que los configuró
- Verifica siempre las fuentes del servidor MCP antes de la instalación
- Utiliza variables de entorno para datos de configuración sensibles
- Revisa las capacidades del servidor MCP antes de conceder acceso a los agentes
## Solución de problemas
### El servidor MCP no aparece
- Verifica que la configuración del servidor sea correcta
- Comprueba que tienes los permisos necesarios
- Asegúrate de que el servidor MCP esté en funcionamiento y sea accesible
### Fallos en la ejecución de herramientas
- Verifica que los parámetros de la herramienta estén correctamente formateados
- Revisa los registros del servidor MCP para ver mensajes de error
- Asegúrate de que la autenticación requerida esté configurada
### Errores de permisos
- Confirma tu nivel de permiso en el espacio de trabajo
- Comprueba si el servidor MCP requiere autenticación adicional
- Verifica que el servidor esté configurado correctamente para tu espacio de trabajo

View File

@@ -1,161 +0,0 @@
---
title: Roles y permisos
---
import { Video } from '@/components/ui/video'
Cuando invitas a miembros del equipo a tu organización o espacio de trabajo, necesitarás elegir qué nivel de acceso otorgarles. Esta guía explica lo que permite hacer cada nivel de permiso, ayudándote a entender los roles del equipo y qué acceso proporciona cada nivel de permiso.
## Cómo invitar a alguien a un espacio de trabajo
<div className="mx-auto w-full overflow-hidden rounded-lg">
<Video src="invitations.mp4" width={700} height={450} />
</div>
## Niveles de permiso del espacio de trabajo
Al invitar a alguien a un espacio de trabajo, puedes asignar uno de tres niveles de permiso:
| Permiso | Lo que pueden hacer |
|------------|------------------|
| **Lectura** | Ver flujos de trabajo, ver resultados de ejecución, pero no pueden realizar ningún cambio |
| **Escritura** | Crear y editar flujos de trabajo, ejecutar flujos de trabajo, gestionar variables de entorno |
| **Administrador** | Todo lo que puede hacer Escritura, además de invitar/eliminar usuarios y gestionar la configuración del espacio de trabajo |
## Lo que puede hacer cada nivel de permiso
Aquí hay un desglose detallado de lo que los usuarios pueden hacer con cada nivel de permiso:
### Permiso de lectura
**Perfecto para:** Interesados, observadores o miembros del equipo que necesitan visibilidad pero no deberían hacer cambios
**Lo que pueden hacer:**
- Ver todos los flujos de trabajo en el espacio de trabajo
- Ver resultados y registros de ejecución de flujos de trabajo
- Explorar configuraciones y ajustes de flujos de trabajo
- Ver variables de entorno (pero no editarlas)
**Lo que no pueden hacer:**
- Crear, editar o eliminar flujos de trabajo
- Ejecutar o implementar flujos de trabajo
- Cambiar cualquier configuración del espacio de trabajo
- Invitar a otros usuarios
### Permiso de escritura
**Perfecto para:** Desarrolladores, creadores de contenido o miembros del equipo que trabajan activamente en automatización
**Lo que pueden hacer:**
- Todo lo que pueden hacer los usuarios de Lectura, además de:
- Crear, editar y eliminar flujos de trabajo
- Ejecutar e implementar flujos de trabajo
- Añadir, editar y eliminar variables de entorno del espacio de trabajo
- Usar todas las herramientas e integraciones disponibles
- Colaborar en tiempo real en la edición de flujos de trabajo
**Lo que no pueden hacer:**
- Invitar o eliminar usuarios del espacio de trabajo
- Cambiar la configuración del espacio de trabajo
- Eliminar el espacio de trabajo
### Permiso de administrador
**Perfecto para:** Líderes de equipo, gerentes de proyecto o líderes técnicos que necesitan gestionar el espacio de trabajo
**Lo que pueden hacer:**
- Todo lo que los usuarios con permiso de escritura pueden hacer, además de:
- Invitar a nuevos usuarios al espacio de trabajo con cualquier nivel de permiso
- Eliminar usuarios del espacio de trabajo
- Gestionar la configuración e integraciones del espacio de trabajo
- Configurar conexiones con herramientas externas
- Eliminar flujos de trabajo creados por otros usuarios
**Lo que no pueden hacer:**
- Eliminar el espacio de trabajo (solo el propietario del espacio de trabajo puede hacer esto)
- Eliminar al propietario del espacio de trabajo
---
## Propietario del espacio de trabajo vs administrador
Cada espacio de trabajo tiene un **Propietario** (la persona que lo creó) además de cualquier número de **Administradores**.
### Propietario del espacio de trabajo
- Tiene todos los permisos de administrador
- Puede eliminar el espacio de trabajo
- No puede ser eliminado del espacio de trabajo
- Puede transferir la propiedad a otro usuario
### Administrador del espacio de trabajo
- Puede hacer todo excepto eliminar el espacio de trabajo o eliminar al propietario
- Puede ser eliminado del espacio de trabajo por el propietario u otros administradores
---
## Escenarios comunes
### Añadir un nuevo desarrollador a tu equipo
1. **Nivel de organización**: Invítalo como **Miembro de la organización**
2. **Nivel de espacio de trabajo**: Dale permiso de **Escritura** para que pueda crear y editar flujos de trabajo
### Añadir un gerente de proyecto
1. **Nivel de organización**: Invítalo como **Miembro de la organización**
2. **Nivel de espacio de trabajo**: Dale permiso de **Administrador** para que pueda gestionar el equipo y ver todo
### Añadir un interesado o cliente
1. **Nivel de organización**: Invítalo como **Miembro de la organización**
2. **Nivel de espacio de trabajo**: Dale permiso de **Lectura** para que pueda ver el progreso pero no hacer cambios
---
## Variables de entorno
Los usuarios pueden crear dos tipos de variables de entorno:
### Variables de entorno personales
- Solo visibles para el usuario individual
- Disponibles en todos los flujos de trabajo que ejecutan
- Gestionadas en la configuración del usuario
### Variables de entorno del espacio de trabajo
- **Permiso de lectura**: Puede ver nombres y valores de variables
- **Permiso de escritura/administración**: Puede añadir, editar y eliminar variables
- Disponibles para todos los miembros del espacio de trabajo
- Si una variable personal tiene el mismo nombre que una variable del espacio de trabajo, la personal tiene prioridad
---
## Mejores prácticas
### Comienza con permisos mínimos
Otorga a los usuarios el nivel de permiso más bajo que necesiten para hacer su trabajo. Siempre puedes aumentar los permisos más tarde.
### Usa la estructura de la organización sabiamente
- Haz que los líderes de equipo de confianza sean **Administradores de la organización**
- La mayoría de los miembros del equipo deberían ser **Miembros de la organización**
- Reserva los permisos de **Administrador** del espacio de trabajo para personas que necesiten gestionar usuarios
### Revisa los permisos regularmente
Revisa periódicamente quién tiene acceso a qué, especialmente cuando los miembros del equipo cambian de roles o dejan la empresa.
### Seguridad de las variables de entorno
- Usa variables de entorno personales para claves API sensibles
- Usa variables de entorno del espacio de trabajo para configuración compartida
- Audita regularmente quién tiene acceso a variables sensibles
---
## Roles de la organización
Al invitar a alguien a tu organización, puedes asignar uno de dos roles:
### Administrador de la organización
**Lo que pueden hacer:**
- Invitar y eliminar miembros del equipo de la organización
- Crear nuevos espacios de trabajo
- Gestionar la facturación y configuración de suscripción
- Acceder a todos los espacios de trabajo dentro de la organización
### Miembro de la organización
**Lo que pueden hacer:**
- Acceder a espacios de trabajo a los que han sido específicamente invitados
- Ver la lista de miembros de la organización
- No pueden invitar a nuevas personas ni gestionar la configuración de la organización

View File

@@ -1,412 +0,0 @@
---
title: Python SDK
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
El SDK oficial de Python para Sim te permite ejecutar flujos de trabajo programáticamente desde tus aplicaciones Python utilizando el SDK oficial de Python.
<Callout type="info">
El SDK de Python es compatible con Python 3.8+ y proporciona ejecución sincrónica de flujos de trabajo. Todas las ejecuciones de flujos de trabajo son actualmente sincrónicas.
</Callout>
## Instalación
Instala el SDK usando pip:
```bash
pip install simstudio-sdk
```
## Inicio rápido
Aquí tienes un ejemplo sencillo para empezar:
```python
from simstudio import SimStudioClient
# Initialize the client
client = SimStudioClient(
api_key="your-api-key-here",
base_url="https://sim.ai" # optional, defaults to https://sim.ai
)
# Execute a workflow
try:
result = client.execute_workflow("workflow-id")
print("Workflow executed successfully:", result)
except Exception as error:
print("Workflow execution failed:", error)
```
## Referencia de la API
### SimStudioClient
#### Constructor
```python
SimStudioClient(api_key: str, base_url: str = "https://sim.ai")
```
**Parámetros:**
- `api_key` (str): Tu clave API de Sim
- `base_url` (str, opcional): URL base para la API de Sim
#### Métodos
##### execute_workflow()
Ejecuta un flujo de trabajo con datos de entrada opcionales.
```python
result = client.execute_workflow(
"workflow-id",
input_data={"message": "Hello, world!"},
timeout=30.0 # 30 seconds
)
```
**Parámetros:**
- `workflow_id` (str): El ID del flujo de trabajo a ejecutar
- `input_data` (dict, opcional): Datos de entrada para pasar al flujo de trabajo
- `timeout` (float, opcional): Tiempo de espera en segundos (predeterminado: 30.0)
**Devuelve:** `WorkflowExecutionResult`
##### get_workflow_status()
Obtiene el estado de un flujo de trabajo (estado de implementación, etc.).
```python
status = client.get_workflow_status("workflow-id")
print("Is deployed:", status.is_deployed)
```
**Parámetros:**
- `workflow_id` (str): El ID del flujo de trabajo
**Devuelve:** `WorkflowStatus`
##### validate_workflow()
Valida que un flujo de trabajo esté listo para su ejecución.
```python
is_ready = client.validate_workflow("workflow-id")
if is_ready:
# Workflow is deployed and ready
pass
```
**Parámetros:**
- `workflow_id` (str): El ID del flujo de trabajo
**Devuelve:** `bool`
##### execute_workflow_sync()
<Callout type="info">
Actualmente, este método es idéntico a `execute_workflow()` ya que todas las ejecuciones son síncronas. Este método se proporciona para compatibilidad futura cuando se añada la ejecución asíncrona.
</Callout>
Ejecuta un flujo de trabajo (actualmente síncrono, igual que `execute_workflow()`).
```python
result = client.execute_workflow_sync(
"workflow-id",
input_data={"data": "some input"},
timeout=60.0
)
```
**Parámetros:**
- `workflow_id` (str): El ID del flujo de trabajo a ejecutar
- `input_data` (dict, opcional): Datos de entrada para pasar al flujo de trabajo
- `timeout` (float): Tiempo de espera para la solicitud inicial en segundos
**Devuelve:** `WorkflowExecutionResult`
##### set_api_key()
Actualiza la clave API.
```python
client.set_api_key("new-api-key")
```
##### set_base_url()
Actualiza la URL base.
```python
client.set_base_url("https://my-custom-domain.com")
```
##### close()
Cierra la sesión HTTP subyacente.
```python
client.close()
```
## Clases de datos
### WorkflowExecutionResult
```python
@dataclass
class WorkflowExecutionResult:
success: bool
output: Optional[Any] = None
error: Optional[str] = None
logs: Optional[List[Any]] = None
metadata: Optional[Dict[str, Any]] = None
trace_spans: Optional[List[Any]] = None
total_duration: Optional[float] = None
```
### WorkflowStatus
```python
@dataclass
class WorkflowStatus:
is_deployed: bool
deployed_at: Optional[str] = None
is_published: bool = False
needs_redeployment: bool = False
```
### SimStudioError
```python
class SimStudioError(Exception):
def __init__(self, message: str, code: Optional[str] = None, status: Optional[int] = None):
super().__init__(message)
self.code = code
self.status = status
```
## Ejemplos
### Ejecución básica de flujo de trabajo
<Steps>
<Step title="Inicializar el cliente">
Configura el SimStudioClient con tu clave API.
</Step>
<Step title="Validar el flujo de trabajo">
Comprueba si el flujo de trabajo está desplegado y listo para su ejecución.
</Step>
<Step title="Ejecutar el flujo de trabajo">
Ejecuta el flujo de trabajo con tus datos de entrada.
</Step>
<Step title="Gestionar el resultado">
Procesa el resultado de la ejecución y maneja cualquier error.
</Step>
</Steps>
```python
import os
from simstudio import SimStudioClient
client = SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY"))
def run_workflow():
try:
# Check if workflow is ready
is_ready = client.validate_workflow("my-workflow-id")
if not is_ready:
raise Exception("Workflow is not deployed or ready")
# Execute the workflow
result = client.execute_workflow(
"my-workflow-id",
input_data={
"message": "Process this data",
"user_id": "12345"
}
)
if result.success:
print("Output:", result.output)
print("Duration:", result.metadata.get("duration") if result.metadata else None)
else:
print("Workflow failed:", result.error)
except Exception as error:
print("Error:", error)
run_workflow()
```
### Manejo de errores
Maneja diferentes tipos de errores que pueden ocurrir durante la ejecución del flujo de trabajo:
```python
from simstudio import SimStudioClient, SimStudioError
import os
client = SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY"))
def execute_with_error_handling():
try:
result = client.execute_workflow("workflow-id")
return result
except SimStudioError as error:
if error.code == "UNAUTHORIZED":
print("Invalid API key")
elif error.code == "TIMEOUT":
print("Workflow execution timed out")
elif error.code == "USAGE_LIMIT_EXCEEDED":
print("Usage limit exceeded")
elif error.code == "INVALID_JSON":
print("Invalid JSON in request body")
else:
print(f"Workflow error: {error}")
raise
except Exception as error:
print(f"Unexpected error: {error}")
raise
```
### Uso del administrador de contexto
Usa el cliente como un administrador de contexto para manejar automáticamente la limpieza de recursos:
```python
from simstudio import SimStudioClient
import os
# Using context manager to automatically close the session
with SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY")) as client:
result = client.execute_workflow("workflow-id")
print("Result:", result)
# Session is automatically closed here
```
### Ejecución por lotes de flujos de trabajo
Ejecuta múltiples flujos de trabajo de manera eficiente:
```python
from simstudio import SimStudioClient
import os
client = SimStudioClient(api_key=os.getenv("SIMSTUDIO_API_KEY"))
def execute_workflows_batch(workflow_data_pairs):
"""Execute multiple workflows with different input data."""
results = []
for workflow_id, input_data in workflow_data_pairs:
try:
# Validate workflow before execution
if not client.validate_workflow(workflow_id):
print(f"Skipping {workflow_id}: not deployed")
continue
result = client.execute_workflow(workflow_id, input_data)
results.append({
"workflow_id": workflow_id,
"success": result.success,
"output": result.output,
"error": result.error
})
except Exception as error:
results.append({
"workflow_id": workflow_id,
"success": False,
"error": str(error)
})
return results
# Example usage
workflows = [
("workflow-1", {"type": "analysis", "data": "sample1"}),
("workflow-2", {"type": "processing", "data": "sample2"}),
]
results = execute_workflows_batch(workflows)
for result in results:
print(f"Workflow {result['workflow_id']}: {'Success' if result['success'] else 'Failed'}")
```
### Configuración del entorno
Configura el cliente usando variables de entorno:
<Tabs items={['Development', 'Production']}>
<Tab value="Development">
```python
import os
from simstudio import SimStudioClient
# Development configuration
client = SimStudioClient(
api_key=os.getenv("SIMSTUDIO_API_KEY"),
base_url=os.getenv("SIMSTUDIO_BASE_URL", "https://sim.ai")
)
```
</Tab>
<Tab value="Production">
```python
import os
from simstudio import SimStudioClient
# Production configuration with error handling
api_key = os.getenv("SIMSTUDIO_API_KEY")
if not api_key:
raise ValueError("SIMSTUDIO_API_KEY environment variable is required")
client = SimStudioClient(
api_key=api_key,
base_url=os.getenv("SIMSTUDIO_BASE_URL", "https://sim.ai")
)
```
</Tab>
</Tabs>
## Obtener tu clave API
<Steps>
<Step title="Inicia sesión en Sim">
Navega a [Sim](https://sim.ai) e inicia sesión en tu cuenta.
</Step>
<Step title="Abre tu flujo de trabajo">
Navega al flujo de trabajo que quieres ejecutar programáticamente.
</Step>
<Step title="Despliega tu flujo de trabajo">
Haz clic en "Deploy" para desplegar tu flujo de trabajo si aún no ha sido desplegado.
</Step>
<Step title="Crea o selecciona una clave API">
Durante el proceso de despliegue, selecciona o crea una clave API.
</Step>
<Step title="Copia la clave API">
Copia la clave API para usarla en tu aplicación Python.
</Step>
</Steps>
<Callout type="warning">
Mantén tu clave API segura y nunca la incluyas en el control de versiones. Utiliza variables de entorno o gestión de configuración segura.
</Callout>
## Requisitos
- Python 3.8+
- requests >= 2.25.0
## Licencia
Apache-2.0

View File

@@ -1,607 +0,0 @@
---
title: TypeScript/JavaScript SDK
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
El SDK oficial de TypeScript/JavaScript para Sim proporciona seguridad de tipos completa y es compatible tanto con entornos Node.js como con navegadores, lo que te permite ejecutar flujos de trabajo de forma programática desde tus aplicaciones Node.js, aplicaciones web y otros entornos JavaScript. Todas las ejecuciones de flujos de trabajo son actualmente síncronas.
<Callout type="info">
El SDK de TypeScript proporciona seguridad de tipos completa y es compatible tanto con entornos Node.js como con navegadores. Todas las ejecuciones de flujos de trabajo son actualmente síncronas.
</Callout>
## Instalación
Instala el SDK usando tu gestor de paquetes preferido:
<Tabs items={['npm', 'yarn', 'bun']}>
<Tab value="npm">
```bash
npm install simstudio-ts-sdk
```
</Tab>
<Tab value="yarn">
```bash
yarn add simstudio-ts-sdk
```
</Tab>
<Tab value="bun">
```bash
bun add simstudio-ts-sdk
```
</Tab>
</Tabs>
## Inicio rápido
Aquí tienes un ejemplo sencillo para empezar:
```typescript
import { SimStudioClient } from 'simstudio-ts-sdk';
// Initialize the client
const client = new SimStudioClient({
apiKey: 'your-api-key-here',
baseUrl: 'https://sim.ai' // optional, defaults to https://sim.ai
});
// Execute a workflow
try {
const result = await client.executeWorkflow('workflow-id');
console.log('Workflow executed successfully:', result);
} catch (error) {
console.error('Workflow execution failed:', error);
}
```
## Referencia de la API
### SimStudioClient
#### Constructor
```typescript
new SimStudioClient(config: SimStudioConfig)
```
**Configuración:**
- `config.apiKey` (string): Tu clave API de Sim
- `config.baseUrl` (string, opcional): URL base para la API de Sim (por defecto es `https://sim.ai`)
#### Métodos
##### executeWorkflow()
Ejecuta un flujo de trabajo con datos de entrada opcionales.
```typescript
const result = await client.executeWorkflow('workflow-id', {
input: { message: 'Hello, world!' },
timeout: 30000 // 30 seconds
});
```
**Parámetros:**
- `workflowId` (string): El ID del flujo de trabajo a ejecutar
- `options` (ExecutionOptions, opcional):
- `input` (any): Datos de entrada para pasar al flujo de trabajo
- `timeout` (number): Tiempo de espera en milisegundos (predeterminado: 30000)
**Devuelve:** `Promise<WorkflowExecutionResult>`
##### getWorkflowStatus()
Obtener el estado de un flujo de trabajo (estado de implementación, etc.).
```typescript
const status = await client.getWorkflowStatus('workflow-id');
console.log('Is deployed:', status.isDeployed);
```
**Parámetros:**
- `workflowId` (string): El ID del flujo de trabajo
**Devuelve:** `Promise<WorkflowStatus>`
##### validateWorkflow()
Validar que un flujo de trabajo está listo para su ejecución.
```typescript
const isReady = await client.validateWorkflow('workflow-id');
if (isReady) {
// Workflow is deployed and ready
}
```
**Parámetros:**
- `workflowId` (string): El ID del flujo de trabajo
**Devuelve:** `Promise<boolean>`
##### executeWorkflowSync()
<Callout type="info">
Actualmente, este método es idéntico a `executeWorkflow()` ya que todas las ejecuciones son síncronas. Este método se proporciona para compatibilidad futura cuando se añada la ejecución asíncrona.
</Callout>
Ejecutar un flujo de trabajo (actualmente síncrono, igual que `executeWorkflow()`).
```typescript
const result = await client.executeWorkflowSync('workflow-id', {
input: { data: 'some input' },
timeout: 60000
});
```
**Parámetros:**
- `workflowId` (string): El ID del flujo de trabajo a ejecutar
- `options` (ExecutionOptions, opcional):
- `input` (any): Datos de entrada para pasar al flujo de trabajo
- `timeout` (number): Tiempo de espera para la solicitud inicial en milisegundos
**Devuelve:** `Promise<WorkflowExecutionResult>`
##### setApiKey()
Actualizar la clave API.
```typescript
client.setApiKey('new-api-key');
```
##### setBaseUrl()
Actualizar la URL base.
```typescript
client.setBaseUrl('https://my-custom-domain.com');
```
## Tipos
### WorkflowExecutionResult
```typescript
interface WorkflowExecutionResult {
success: boolean;
output?: any;
error?: string;
logs?: any[];
metadata?: {
duration?: number;
executionId?: string;
[key: string]: any;
};
traceSpans?: any[];
totalDuration?: number;
}
```
### WorkflowStatus
```typescript
interface WorkflowStatus {
isDeployed: boolean;
deployedAt?: string;
isPublished: boolean;
needsRedeployment: boolean;
}
```
### SimStudioError
```typescript
class SimStudioError extends Error {
code?: string;
status?: number;
}
```
## Ejemplos
### Ejecución básica de flujo de trabajo
<Steps>
<Step title="Inicializar el cliente">
Configura el SimStudioClient con tu clave API.
</Step>
<Step title="Validar el flujo de trabajo">
Comprueba si el flujo de trabajo está implementado y listo para su ejecución.
</Step>
<Step title="Ejecutar el flujo de trabajo">
Ejecuta el flujo de trabajo con tus datos de entrada.
</Step>
<Step title="Gestionar el resultado">
Procesa el resultado de la ejecución y maneja cualquier error.
</Step>
</Steps>
```typescript
import { SimStudioClient } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: process.env.SIMSTUDIO_API_KEY!
});
async function runWorkflow() {
try {
// Check if workflow is ready
const isReady = await client.validateWorkflow('my-workflow-id');
if (!isReady) {
throw new Error('Workflow is not deployed or ready');
}
// Execute the workflow
const result = await client.executeWorkflow('my-workflow-id', {
input: {
message: 'Process this data',
userId: '12345'
}
});
if (result.success) {
console.log('Output:', result.output);
console.log('Duration:', result.metadata?.duration);
} else {
console.error('Workflow failed:', result.error);
}
} catch (error) {
console.error('Error:', error);
}
}
runWorkflow();
```
### Manejo de errores
Maneja diferentes tipos de errores que pueden ocurrir durante la ejecución del flujo de trabajo:
```typescript
import { SimStudioClient, SimStudioError } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: process.env.SIMSTUDIO_API_KEY!
});
async function executeWithErrorHandling() {
try {
const result = await client.executeWorkflow('workflow-id');
return result;
} catch (error) {
if (error instanceof SimStudioError) {
switch (error.code) {
case 'UNAUTHORIZED':
console.error('Invalid API key');
break;
case 'TIMEOUT':
console.error('Workflow execution timed out');
break;
case 'USAGE_LIMIT_EXCEEDED':
console.error('Usage limit exceeded');
break;
case 'INVALID_JSON':
console.error('Invalid JSON in request body');
break;
default:
console.error('Workflow error:', error.message);
}
} else {
console.error('Unexpected error:', error);
}
throw error;
}
}
```
### Configuración del entorno
Configura el cliente usando variables de entorno:
<Tabs items={['Development', 'Production']}>
<Tab value="Development">
```typescript
import { SimStudioClient } from 'simstudio-ts-sdk';
// Development configuration
const apiKey = process.env.SIMSTUDIO_API_KEY;
if (!apiKey) {
throw new Error('SIMSTUDIO_API_KEY environment variable is required');
}
const client = new SimStudioClient({
apiKey,
baseUrl: process.env.SIMSTUDIO_BASE_URL // optional
});
```
</Tab>
<Tab value="Production">
```typescript
import { SimStudioClient } from 'simstudio-ts-sdk';
// Production configuration with validation
const apiKey = process.env.SIMSTUDIO_API_KEY;
if (!apiKey) {
throw new Error('SIMSTUDIO_API_KEY environment variable is required');
}
const client = new SimStudioClient({
apiKey,
baseUrl: process.env.SIMSTUDIO_BASE_URL || 'https://sim.ai'
});
```
</Tab>
</Tabs>
### Integración con Express de Node.js
Integración con un servidor Express.js:
```typescript
import express from 'express';
import { SimStudioClient } from 'simstudio-ts-sdk';
const app = express();
const client = new SimStudioClient({
apiKey: process.env.SIMSTUDIO_API_KEY!
});
app.use(express.json());
app.post('/execute-workflow', async (req, res) => {
try {
const { workflowId, input } = req.body;
const result = await client.executeWorkflow(workflowId, {
input,
timeout: 60000
});
res.json({
success: true,
data: result
});
} catch (error) {
console.error('Workflow execution error:', error);
res.status(500).json({
success: false,
error: error instanceof Error ? error.message : 'Unknown error'
});
}
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
```
### Ruta API de Next.js
Uso con rutas API de Next.js:
```typescript
// pages/api/workflow.ts or app/api/workflow/route.ts
import { NextApiRequest, NextApiResponse } from 'next';
import { SimStudioClient } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: process.env.SIMSTUDIO_API_KEY!
});
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method not allowed' });
}
try {
const { workflowId, input } = req.body;
const result = await client.executeWorkflow(workflowId, {
input,
timeout: 30000
});
res.status(200).json(result);
} catch (error) {
console.error('Error executing workflow:', error);
res.status(500).json({
error: 'Failed to execute workflow'
});
}
}
```
### Uso del navegador
Uso en el navegador (con la configuración CORS adecuada):
```typescript
import { SimStudioClient } from 'simstudio-ts-sdk';
// Note: In production, use a proxy server to avoid exposing API keys
const client = new SimStudioClient({
apiKey: 'your-public-api-key', // Use with caution in browser
baseUrl: 'https://sim.ai'
});
async function executeClientSideWorkflow() {
try {
const result = await client.executeWorkflow('workflow-id', {
input: {
userInput: 'Hello from browser'
}
});
console.log('Workflow result:', result);
// Update UI with result
document.getElementById('result')!.textContent =
JSON.stringify(result.output, null, 2);
} catch (error) {
console.error('Error:', error);
}
}
// Attach to button click
document.getElementById('executeBtn')?.addEventListener('click', executeClientSideWorkflow);
```
<Callout type="warning">
Cuando uses el SDK en el navegador, ten cuidado de no exponer claves API sensibles. Considera usar un proxy de backend o claves API públicas con permisos limitados.
</Callout>
### Ejemplo de hook de React
Crea un hook personalizado de React para la ejecución del flujo de trabajo:
```typescript
import { useState, useCallback } from 'react';
import { SimStudioClient, WorkflowExecutionResult } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: process.env.NEXT_PUBLIC_SIMSTUDIO_API_KEY!
});
interface UseWorkflowResult {
result: WorkflowExecutionResult | null;
loading: boolean;
error: Error | null;
executeWorkflow: (workflowId: string, input?: any) => Promise<void>;
}
export function useWorkflow(): UseWorkflowResult {
const [result, setResult] = useState<WorkflowExecutionResult | null>(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<Error | null>(null);
const executeWorkflow = useCallback(async (workflowId: string, input?: any) => {
setLoading(true);
setError(null);
setResult(null);
try {
const workflowResult = await client.executeWorkflow(workflowId, {
input,
timeout: 30000
});
setResult(workflowResult);
} catch (err) {
setError(err instanceof Error ? err : new Error('Unknown error'));
} finally {
setLoading(false);
}
}, []);
return {
result,
loading,
error,
executeWorkflow
};
}
// Usage in component
function WorkflowComponent() {
const { result, loading, error, executeWorkflow } = useWorkflow();
const handleExecute = () => {
executeWorkflow('my-workflow-id', {
message: 'Hello from React!'
});
};
return (
<div>
<button onClick={handleExecute} disabled={loading}>
{loading ? 'Executing...' : 'Execute Workflow'}
</button>
{error && <div>Error: {error.message}</div>}
{result && (
<div>
<h3>Result:</h3>
<pre>{JSON.stringify(result, null, 2)}</pre>
</div>
)}
</div>
);
}
```
## Obtener tu clave API
<Steps>
<Step title="Inicia sesión en Sim">
Navega a [Sim](https://sim.ai) e inicia sesión en tu cuenta.
</Step>
<Step title="Abre tu flujo de trabajo">
Navega al flujo de trabajo que quieres ejecutar programáticamente.
</Step>
<Step title="Despliega tu flujo de trabajo">
Haz clic en "Deploy" para desplegar tu flujo de trabajo si aún no ha sido desplegado.
</Step>
<Step title="Crea o selecciona una clave API">
Durante el proceso de despliegue, selecciona o crea una clave API.
</Step>
<Step title="Copia la clave API">
Copia la clave API para usarla en tu aplicación TypeScript/JavaScript.
</Step>
</Steps>
<Callout type="warning">
Mantén tu clave API segura y nunca la incluyas en el control de versiones. Usa variables de entorno o gestión de configuración segura.
</Callout>
## Requisitos
- Node.js 16+
- TypeScript 5.0+ (para proyectos TypeScript)
## Soporte para TypeScript
El SDK está escrito en TypeScript y proporciona seguridad de tipos completa:
```typescript
import {
SimStudioClient,
WorkflowExecutionResult,
WorkflowStatus,
SimStudioError
} from 'simstudio-ts-sdk';
// Type-safe client initialization
const client: SimStudioClient = new SimStudioClient({
apiKey: process.env.SIMSTUDIO_API_KEY!
});
// Type-safe workflow execution
const result: WorkflowExecutionResult = await client.executeWorkflow('workflow-id', {
input: {
message: 'Hello, TypeScript!'
}
});
// Type-safe status checking
const status: WorkflowStatus = await client.getWorkflowStatus('workflow-id');
```
## Licencia
Apache-2.0

View File

@@ -1,161 +0,0 @@
---
title: Airtable
description: Lee, crea y actualiza Airtable
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="airtable"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 -20.5 256 256'
version='1.1'
xmlns='http://www.w3.org/2000/svg'
xmlnsXlink='http://www.w3.org/1999/xlink'
preserveAspectRatio='xMidYMid'
>
<g>
<path
d='M114.25873,2.70101695 L18.8604023,42.1756384 C13.5552723,44.3711638 13.6102328,51.9065311 18.9486282,54.0225085 L114.746142,92.0117514 C123.163769,95.3498757 132.537419,95.3498757 140.9536,92.0117514 L236.75256,54.0225085 C242.08951,51.9065311 242.145916,44.3711638 236.83934,42.1756384 L141.442459,2.70101695 C132.738459,-0.900338983 122.961284,-0.900338983 114.25873,2.70101695'
fill='#FFBF00'
/>
<path
d='M136.349071,112.756863 L136.349071,207.659101 C136.349071,212.173089 140.900664,215.263892 145.096461,213.600615 L251.844122,172.166219 C254.281184,171.200072 255.879376,168.845451 255.879376,166.224705 L255.879376,71.3224678 C255.879376,66.8084791 251.327783,63.7176768 247.131986,65.3809537 L140.384325,106.815349 C137.94871,107.781496 136.349071,110.136118 136.349071,112.756863'
fill='#26B5F8'
/>
<path
d='M111.422771,117.65355 L79.742409,132.949912 L76.5257763,134.504714 L9.65047684,166.548104 C5.4112904,168.593211 0.000578531073,165.503855 0.000578531073,160.794612 L0.000578531073,71.7210757 C0.000578531073,70.0173017 0.874160452,68.5463864 2.04568588,67.4384994 C2.53454463,66.9481944 3.08848814,66.5446689 3.66412655,66.2250305 C5.26231864,65.2661153 7.54173107,65.0101153 9.47981017,65.7766689 L110.890522,105.957098 C116.045234,108.002206 116.450206,115.225166 111.422771,117.65355'
fill='#ED3049'
/>
<path
d='M111.422771,117.65355 L79.742409,132.949912 L2.04568588,67.4384994 C2.53454463,66.9481944 3.08848814,66.5446689 3.66412655,66.2250305 C5.26231864,65.2661153 7.54173107,65.0101153 9.47981017,65.7766689 L110.890522,105.957098 C116.045234,108.002206 116.450206,115.225166 111.422771,117.65355'
fillOpacity='0.25'
fill='#000000'
/>
</g>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Airtable](https://airtable.com/) es una potente plataforma basada en la nube que combina la funcionalidad de una base de datos con la simplicidad de una hoja de cálculo. Permite a los usuarios crear bases de datos flexibles para organizar, almacenar y colaborar con información.
Con Airtable, puedes:
- **Crear bases de datos personalizadas**: Construye soluciones a medida para gestión de proyectos, calendarios de contenido, seguimiento de inventario y más
- **Visualizar datos**: Ve tu información como una cuadrícula, tablero kanban, calendario o galería
- **Automatizar flujos de trabajo**: Configura disparadores y acciones para automatizar tareas repetitivas
- **Integrar con otras herramientas**: Conéctate con cientos de otras aplicaciones a través de integraciones nativas y APIs
En Sim, la integración de Airtable permite a tus agentes interactuar con tus bases de Airtable de forma programática. Esto permite operaciones de datos fluidas como recuperar información, crear nuevos registros y actualizar datos existentes, todo dentro de los flujos de trabajo de tu agente. Utiliza Airtable como una fuente o destino de datos dinámico para tus agentes, permitiéndoles acceder y manipular información estructurada como parte de sus procesos de toma de decisiones y ejecución de tareas.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra la funcionalidad de Airtable para gestionar registros de tablas. Listar, obtener, crear,
## Herramientas
### `airtable_list_records`
Leer registros de una tabla de Airtable
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `baseId` | string | Sí | ID de la base de Airtable |
| `tableId` | string | Sí | ID de la tabla |
| `maxRecords` | number | No | Número máximo de registros a devolver |
| `filterFormula` | string | No | Fórmula para filtrar registros \(p. ej., "\(\{Nombre del campo\} = \'Valor\'\)"\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `records` | json | Array de registros de Airtable recuperados |
### `airtable_get_record`
Recuperar un solo registro de una tabla de Airtable por su ID
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `baseId` | string | Sí | ID de la base de Airtable |
| `tableId` | string | Sí | ID o nombre de la tabla |
| `recordId` | string | Sí | ID del registro a recuperar |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `record` | json | Registro de Airtable recuperado con id, createdTime y campos |
| `metadata` | json | Metadatos de la operación incluyendo el recuento de registros |
### `airtable_create_records`
Escribir nuevos registros en una tabla de Airtable
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `baseId` | string | Sí | ID de la base de Airtable |
| `tableId` | string | Sí | ID o nombre de la tabla |
| `records` | json | Sí | Array de registros para crear, cada uno con un objeto `fields` |
| `fields` | string | No | Sin descripción |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `records` | json | Array de registros de Airtable creados |
### `airtable_update_record`
Actualizar un registro existente en una tabla de Airtable por ID
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `baseId` | string | Sí | ID de la base de Airtable |
| `tableId` | string | Sí | ID o nombre de la tabla |
| `recordId` | string | Sí | ID del registro a actualizar |
| `fields` | json | Sí | Un objeto que contiene los nombres de los campos y sus nuevos valores |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `record` | json | Registro de Airtable actualizado con id, createdTime y campos |
| `metadata` | json | Metadatos de la operación incluyendo el recuento de registros y los nombres de campos actualizados |
### `airtable_update_multiple_records`
Actualizar múltiples registros existentes en una tabla de Airtable
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `baseId` | string | Sí | ID de la base de Airtable |
| `tableId` | string | Sí | ID o nombre de la tabla |
| `records` | json | Sí | Array de registros para actualizar, cada uno con un `id` y un objeto `fields` |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `records` | json | Array de registros de Airtable actualizados |
## Notas
- Categoría: `tools`
- Tipo: `airtable`

View File

@@ -1,109 +0,0 @@
---
title: ArXiv
description: Busca y recupera artículos académicos de ArXiv
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="arxiv"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon" id='logomark' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17.732 24.269'>
<g id='tiny'>
<path
d='M573.549,280.916l2.266,2.738,6.674-7.84c.353-.47.52-.717.353-1.117a1.218,1.218,0,0,0-1.061-.748h0a.953.953,0,0,0-.712.262Z'
transform='translate(-566.984 -271.548)'
fill='#bdb9b4'
/>
<path
d='M579.525,282.225l-10.606-10.174a1.413,1.413,0,0,0-.834-.5,1.09,1.09,0,0,0-1.027.66c-.167.4-.047.681.319,1.206l8.44,10.242h0l-6.282,7.716a1.336,1.336,0,0,0-.323,1.3,1.114,1.114,0,0,0,1.04.69A.992.992,0,0,0,571,293l8.519-7.92A1.924,1.924,0,0,0,579.525,282.225Z'
transform='translate(-566.984 -271.548)'
fill='#b31b1b'
/>
<path
d='M584.32,293.912l-8.525-10.275,0,0L573.53,280.9l-1.389,1.254a2.063,2.063,0,0,0,0,2.965l10.812,10.419a.925.925,0,0,0,.742.282,1.039,1.039,0,0,0,.953-.667A1.261,1.261,0,0,0,584.32,293.912Z'
transform='translate(-566.984 -271.548)'
fill='#bdb9b4'
/>
</g>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[ArXiv](https://arxiv.org/) es un repositorio gratuito de acceso abierto de artículos científicos en campos como física, matemáticas, informática, biología cuantitativa, finanzas cuantitativas, estadística, ingeniería eléctrica, ciencias de sistemas y economía. ArXiv proporciona una amplia colección de preprints y artículos publicados, convirtiéndolo en un recurso primario para investigadores y profesionales de todo el mundo.
Con ArXiv, puedes:
- **Buscar artículos académicos**: Encuentra investigaciones por palabras clave, nombres de autores, títulos, categorías y más
- **Recuperar metadatos de artículos**: Accede a resúmenes, listas de autores, fechas de publicación y otra información bibliográfica
- **Descargar PDFs completos**: Obtén el texto completo de la mayoría de los artículos para un estudio en profundidad
- **Explorar contribuciones de autores**: Visualiza todos los artículos de un autor específico
- **Mantenerte actualizado**: Descubre las últimas publicaciones y temas tendencia en tu campo
En Sim, la integración con ArXiv permite a tus agentes buscar, recuperar y analizar artículos científicos de ArXiv de forma programática. Esto te permite automatizar revisiones de literatura, crear asistentes de investigación o incorporar conocimiento científico actualizado en tus flujos de trabajo con agentes. Utiliza ArXiv como una fuente dinámica de datos para investigación, descubrimiento y extracción de conocimiento dentro de tus proyectos de Sim.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Busca artículos académicos, recupera metadatos, descarga artículos y accede a la amplia colección de investigación científica en ArXiv.
## Herramientas
### `arxiv_search`
Busca artículos académicos en ArXiv por palabras clave, autores, títulos u otros campos.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `searchQuery` | string | Sí | La consulta de búsqueda a ejecutar |
| `searchField` | string | No | Campo en el que buscar: all (todos), ti (título), au (autor), abs (resumen), co (comentario), jr (revista), cat (categoría), rn (número de informe) |
| `maxResults` | number | No | Número máximo de resultados a devolver (predeterminado: 10, máximo: 2000) |
| `sortBy` | string | No | Ordenar por: relevance (relevancia), lastUpdatedDate (fecha de última actualización), submittedDate (fecha de envío) (predeterminado: relevance) |
| `sortOrder` | string | No | Orden de clasificación: ascending (ascendente), descending (descendente) (predeterminado: descending) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `papers` | json | Array de artículos que coinciden con la consulta de búsqueda |
### `arxiv_get_paper`
Obtén información detallada sobre un artículo específico de ArXiv mediante su ID.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `paperId` | string | Sí | ID del artículo de ArXiv (p. ej., "1706.03762") |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `paper` | json | Información detallada sobre el artículo de ArXiv solicitado |
### `arxiv_get_author_papers`
Busca artículos de un autor específico en ArXiv.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `authorName` | string | Sí | Nombre del autor a buscar |
| `maxResults` | number | No | Número máximo de resultados a devolver (predeterminado: 10, máximo: 2000) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `authorPapers` | json | Array de artículos escritos por el autor especificado |
## Notas
- Categoría: `tools`
- Tipo: `arxiv`

View File

@@ -1,90 +0,0 @@
---
title: Uso del navegador
description: Ejecutar tareas de automatización del navegador
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="browser_use"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
version='1.0'
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 150 150'
preserveAspectRatio='xMidYMid meet'
>
<g transform='translate(0,150) scale(0.05,-0.05)' fill='#000000' stroke='none'>
<path
d='M786 2713 c-184 -61 -353 -217 -439 -405 -76 -165 -65 -539 19 -666
l57 -85 -48 -124 c-203 -517 -79 -930 346 -1155 159 -85 441 -71 585 28 l111
77 196 -76 c763 -293 1353 304 1051 1063 -77 191 -77 189 -14 282 163 239 97
660 -140 893 -235 231 -528 256 -975 83 l-96 -37 -121 67 c-144 79 -383 103
-532 55z m459 -235 c88 -23 96 -51 22 -79 -29 -11 -84 -47 -121 -80 -57 -50
-84 -59 -178 -59 -147 0 -190 -44 -238 -241 -102 -424 -230 -440 -230 -29 1
417 289 606 745 488z m1046 -18 c174 -85 266 -309 239 -582 -26 -256 -165
-165 -230 151 -73 356 -469 332 -954 -58 -587 -472 -829 -1251 -388 -1251 108
0 126 -7 214 -80 54 -44 104 -80 113 -80 54 0 -2 -43 -89 -69 -220 -66 -426
-22 -568 120 -599 599 871 2232 1663 1849z m-234 -510 c969 -1036 357 -1962
-787 -1190 -254 171 -348 303 -323 454 21 128 40 123 231 -59 691 -658 1362
-583 1052 117 -106 239 -366 585 -504 671 l-72 44 98 45 c150 68 169 63 305
-82z m-329 -310 c161 -184 163 -160 -30 -338 -188 -173 -180 -173 -386 19
-163 153 -163 157 7 324 218 213 219 213 409 -5z m354 -375 c92 -239 -179
-462 -377 -309 l-46 35 186 163 c211 186 209 185 237 111z'
/>
</g>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[BrowserUse](https://browser-use.com/) es una potente plataforma de automatización de navegador que te permite crear y ejecutar tareas de navegador de forma programática. Proporciona una manera de automatizar interacciones web mediante instrucciones en lenguaje natural, permitiéndote navegar por sitios web, completar formularios, extraer datos y realizar secuencias complejas de acciones sin escribir código.
Con BrowserUse, puedes:
- **Automatizar interacciones web**: Navegar a sitios web, hacer clic en botones, completar formularios y realizar otras acciones de navegador
- **Extraer datos**: Obtener contenido de sitios web, incluyendo texto, imágenes y datos estructurados
- **Ejecutar flujos de trabajo complejos**: Encadenar múltiples acciones para completar tareas web sofisticadas
- **Monitorear la ejecución de tareas**: Observar la ejecución de tareas de navegador en tiempo real con retroalimentación visual
- **Procesar resultados programáticamente**: Recibir salidas estructuradas de tareas de automatización web
En Sim, la integración de BrowserUse permite a tus agentes interactuar con la web como si fueran usuarios humanos. Esto posibilita escenarios como investigación, recopilación de datos, envío de formularios y pruebas web, todo a través de simples instrucciones en lenguaje natural. Tus agentes pueden recopilar información de sitios web, interactuar con aplicaciones web y realizar acciones que normalmente requerirían navegación manual, ampliando sus capacidades para incluir toda la web como recurso.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Ejecuta tareas de automatización de navegador con BrowserUse para navegar por la web, extraer datos y realizar acciones como si un usuario real estuviera interactuando con el navegador. La tarea se ejecuta de forma asíncrona y el bloque realizará sondeos hasta completarse antes de devolver los resultados.
## Herramientas
### `browser_use_run_task`
Ejecuta una tarea de automatización de navegador usando BrowserUse
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `task` | string | Sí | Qué debe hacer el agente de navegador |
| `variables` | json | No | Variables opcionales para usar como secretos \(formato: \{key: value\}\) |
| `format` | string | No | Sin descripción |
| `save_browser_data` | boolean | No | Si se deben guardar los datos del navegador |
| `model` | string | No | Modelo LLM a utilizar \(predeterminado: gpt-4o\) |
| `apiKey` | string | Sí | Clave API para la API de BrowserUse |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `id` | string | Identificador de ejecución de tarea |
| `success` | boolean | Estado de finalización de tarea |
| `output` | json | Datos de salida de la tarea |
| `steps` | json | Pasos de ejecución realizados |
## Notas
- Categoría: `tools`
- Tipo: `browser_use`

View File

@@ -1,226 +0,0 @@
---
title: Clay
description: Poblar libro de trabajo de Clay
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="clay"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon" xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'>
<path
xmlns='http://www.w3.org/2000/svg'
fill='#41B9FD'
d=' M225.000000,1.000000 C227.042313,1.000000 229.084641,1.000000 231.903046,1.237045
C233.981308,1.648251 235.283447,1.974177 236.585678,1.974532 C276.426849,1.985374 316.268005,1.964254 356.349304,2.036658
C356.713806,2.242061 356.838165,2.358902 357.013062,2.696568 C357.361633,3.243123 357.659729,3.568854 358.029053,3.919451
C358.100250,3.944317 358.064270,4.090822 358.043335,4.397895 C358.300018,5.454089 358.577637,6.203210 358.919647,7.420082
C358.919891,27.877140 358.855774,47.866444 358.406097,67.910400 C355.200592,68.111740 352.380737,68.384270 349.560669,68.386124
C311.434967,68.411194 273.308777,68.303810 235.184082,68.495499 C229.321579,68.524979 223.465759,69.888084 217.280884,70.633224
C216.309952,70.742836 215.664993,70.853645 214.722351,70.824722 C211.834686,71.349052 209.244675,72.013123 206.377716,72.681381
C205.743713,72.776283 205.386673,72.866997 204.740524,72.831818 C198.868668,74.719879 193.285919,76.733833 187.518951,78.776100
C187.334747,78.804405 187.002716,78.975388 186.619080,78.955429 C183.339905,80.398605 180.444336,81.861732 177.450043,83.356339
C177.351318,83.387817 177.199478,83.528885 176.863098,83.476791 C174.940445,84.544197 173.354172,85.663696 171.490601,86.873726
C170.873749,87.151909 170.534180,87.339554 169.900208,87.480209 C169.065109,87.950676 168.524414,88.468132 167.772736,89.059799
C167.561722,89.134003 167.180191,89.367592 166.874084,89.344360 C166.036011,89.874809 165.504074,90.428497 164.768677,91.071411
C164.565247,91.160652 164.195068,91.406326 163.886719,91.361374 C162.847015,91.962418 162.115631,92.608421 161.328308,93.267891
C161.272369,93.281357 161.208405,93.377022 160.867157,93.365463 C158.692642,94.907082 156.859375,96.460266 154.780716,98.176086
C154.099411,98.731529 153.663513,99.124352 153.029877,99.558502 C152.562164,99.788048 152.505905,100.026695 152.411484,100.477333
C151.745850,101.065102 151.332077,101.491318 150.666687,101.980057 C150.244827,102.329651 150.074554,102.616714 149.702332,103.025635
C149.247330,103.342041 149.041901,103.578056 148.626404,103.921570 C148.191071,104.281303 148.013428,104.574989 147.660767,104.971512
C147.485733,105.074348 147.185501,105.347694 146.854645,105.346924 C145.509140,106.645203 144.494507,107.944252 143.328308,109.398895
C143.176773,109.554497 142.944397,109.921532 142.688324,109.990189 C142.263062,110.355179 142.093887,110.651512 141.672485,111.133896
C140.733337,112.108200 140.046402,112.896461 139.056610,113.710732 C138.269180,114.554047 137.784592,115.371346 137.263580,116.208557
C137.227158,116.228470 137.222885,116.311386 136.910522,116.418571 C134.917343,118.573212 133.067978,120.505791 131.581848,122.685951
C117.236908,143.729858 109.909592,167.062012 108.797867,192.458298 C106.874710,236.390839 120.176277,274.069336 154.210175,303.200592
C157.543198,306.053497 161.524918,308.148560 165.395065,310.715118 C165.584625,310.834839 166.004089,310.993286 166.112747,311.305908
C169.421280,313.480804 172.621170,315.343109 176.067993,317.436401 C196.154831,328.754059 217.585236,333.047546 240.138840,332.968475
C276.608368,332.840607 313.078613,332.912872 349.548553,332.932007 C352.369659,332.933472 355.190643,333.181519 358.042847,333.756317
C358.105377,352.504913 358.140625,370.812134 358.166443,389.119385 C358.179047,398.047455 357.157593,399.080383 348.101379,399.081543
C309.488556,399.086456 270.875702,399.088837 232.262939,399.034698 C229.118195,399.030304 225.976639,398.454163 222.828934,398.396088
C219.876633,398.341614 216.918152,398.621979 213.655640,398.750488 C212.946808,398.674561 212.544739,398.603149 211.932861,398.249359
C205.139450,396.920532 198.555878,395.874084 191.660583,394.785370 C190.959366,394.590973 190.569855,394.438812 189.976242,394.044556
C188.751892,393.631897 187.731628,393.461365 186.520462,393.271667 C186.329559,393.252502 185.966660,393.127686 185.711517,392.875610
C179.817810,390.901337 174.179230,389.179169 168.376038,387.422913 C168.211411,387.388824 167.919205,387.222443 167.713623,386.935791
C163.177170,384.926636 158.846298,383.204132 154.354828,381.442505 C154.194229,381.403320 153.913010,381.229431 153.720596,380.940063
C150.958603,379.507599 148.389023,378.364502 145.862350,377.112976 C145.905273,377.004486 145.834991,377.222992 145.696899,376.907410
C143.278778,375.470276 140.998734,374.348724 138.546249,373.152405 C138.373810,373.077606 138.071228,372.854553 137.964508,372.539856
C136.491272,371.591217 135.124771,370.957306 133.835419,370.230103 C133.912552,370.136810 133.731659,370.297668 133.638489,369.968719
C130.257477,367.557678 126.969620,365.475616 123.676697,363.365906 C123.671616,363.338226 123.618034,363.355438 123.527176,363.037048
C122.530983,362.219849 121.625641,361.721039 120.554291,361.141144 C120.388283,361.060028 120.099663,360.829254 120.012115,360.507904
C116.854935,357.864441 113.785301,355.542328 110.448624,353.088013 C109.480820,352.261383 108.780060,351.566956 108.005241,350.545807
C106.569366,349.183838 105.207550,348.148560 103.618164,346.953125 C102.887856,346.250793 102.385124,345.708649 101.851944,344.819275
C99.227608,341.972198 96.633736,339.472412 93.829559,336.814728 C93.315529,336.231140 93.011803,335.805389 92.626633,335.113678
C92.241318,334.653351 91.937447,334.458984 91.470352,334.116333 C91.113121,333.744141 90.954285,333.497589 90.815475,332.884094
C89.432999,331.125000 88.065689,329.710205 86.750458,328.261658 C86.802551,328.227905 86.679573,328.244812 86.625587,328.004700
C86.408173,327.453064 86.154968,327.258301 85.840820,327.092529 C85.869644,327.004852 85.792236,327.175934 85.788193,326.847412
C85.086029,325.775726 84.387909,325.032593 83.748154,324.192444 C83.806519,324.095428 83.656967,324.265442 83.677109,323.924805
C82.691200,322.493195 81.685143,321.402222 80.701370,320.271667 C80.723648,320.232025 80.638077,320.262756 80.664627,319.911865
C79.348137,317.824493 78.005081,316.088074 76.632942,314.335297 C76.603851,314.318970 76.610863,314.252594 76.569603,314.015747
C76.383919,313.466492 76.145622,313.265167 75.849998,313.133301 C75.886536,313.091675 75.786301,313.138794 75.787926,312.843567
C75.413757,312.136780 75.037964,311.725281 74.650452,311.296570 C74.638725,311.279388 74.605232,311.254669 74.648026,310.925659
C74.042847,309.802277 73.394867,309.007935 72.848984,308.101166 C72.951088,307.988739 72.736649,308.207153 72.749344,307.902405
C72.247162,307.034119 71.732277,306.470612 71.116684,305.727478 C71.015976,305.547882 70.879890,305.159210 70.904739,304.782593
C66.198082,293.805145 61.429871,283.220459 56.753250,272.595459 C54.901436,268.388306 53.253181,264.091522 51.402115,259.538025
C51.225922,258.823547 51.159870,258.406525 51.280235,257.681335 C50.130058,252.530197 48.793461,247.687271 47.372990,242.549011
C47.250717,241.846664 47.212318,241.439667 47.345688,240.702484 C46.854862,237.196991 46.192276,234.021698 45.439560,230.551788
C45.308647,229.849213 45.267864,229.441223 45.399055,228.679535 C45.646000,226.680176 45.810993,225.032898 45.781715,223.389099
C45.543224,209.998566 45.243523,196.609085 45.021889,183.218307 C44.965343,179.801880 45.121227,176.381912 45.183868,172.656006
C45.260223,171.945328 45.332214,171.542252 45.692661,170.944855 C46.379547,167.156143 46.777977,163.561768 47.196243,159.658173
C47.326954,158.952240 47.437832,158.555511 47.816860,157.951569 C48.405701,156.819183 48.802628,155.912750 49.035774,154.966003
C53.321564,137.562775 58.709690,120.561356 67.075592,104.614586 C68.431061,102.030846 69.442665,99.266708 70.700943,96.329689
C70.963600,95.758194 71.138519,95.442963 71.626465,95.023987 C72.881813,93.185463 73.824142,91.450684 74.833984,89.540924
C74.901497,89.365936 75.115746,89.058022 75.414856,88.950439 C76.055374,88.124435 76.396790,87.406006 76.808441,86.516800
C76.878685,86.346008 77.099190,86.049721 77.426208,85.968033 C78.773079,84.202591 79.792938,82.518845 80.906425,80.889481
C81.000053,80.943871 80.811523,80.846413 81.112083,80.718071 C81.899254,79.675362 82.385872,78.760994 82.980141,77.647797
C83.256111,77.193130 83.468399,76.981361 83.972061,76.695953 C84.379341,76.259384 84.539192,75.940521 84.777573,75.467239
C84.856110,75.312813 85.091125,75.058212 85.387177,74.957954 C86.071411,74.171829 86.459602,73.485962 86.959831,72.547165
C87.574921,71.763893 88.077972,71.233551 88.917511,70.614960 C90.438446,68.934166 91.622894,67.341637 92.892502,65.577087
C92.977646,65.405067 93.223930,65.110596 93.540451,65.035034 C94.925735,63.668842 95.994484,62.378204 97.037460,61.053047
C97.011688,61.018532 97.086418,61.061367 97.418701,60.997078 C100.387512,58.135143 103.024048,55.337498 105.840828,52.291214
C107.274651,50.972633 108.528229,49.902691 110.120842,48.821507 C111.324287,47.898228 112.188705,46.986183 113.028954,46.039188
C113.004784,46.004234 113.069771,46.059036 113.418266,46.038719 C115.379044,44.556744 116.991333,43.095085 118.618896,41.600952
C118.634186,41.568470 118.705971,41.569565 118.943619,41.531807 C119.496582,41.345333 119.686287,41.099613 119.875092,40.861622
C119.999825,40.966347 119.751175,40.750431 120.085175,40.695145 C121.552383,39.660774 122.685600,38.681686 123.971207,37.539024
C124.353516,37.180477 124.609665,37.030270 125.248093,36.934944 C127.105858,35.720867 128.607605,34.496674 130.284821,33.157169
C130.460281,33.041859 130.850082,32.885620 131.191956,32.879478 C132.720169,31.979248 133.906525,31.085161 135.242615,30.070633
C135.392365,29.950191 135.742935,29.792681 136.116943,29.797058 C144.044449,25.665834 151.597931,21.530237 159.443359,17.267967
C160.335373,16.929420 160.935471,16.717543 161.932648,16.610218 C166.284805,15.022083 170.239853,13.329394 174.481018,11.497526
C175.179947,11.265512 175.592758,11.172676 176.284058,11.232684 C181.045059,9.931384 185.527557,8.477241 190.283020,6.942632
C190.929428,6.798172 191.302902,6.734176 192.106628,6.758037 C200.661499,5.630559 208.799301,4.494970 216.903397,3.155535
C219.646088,2.702227 222.303574,1.733297 225.000000,1.000000 z'
/>
<path
xmlns='http://www.w3.org/2000/svg'
fill='#CF207F'
d=' M139.359467,113.684723 C140.046402,112.896461 140.733337,112.108200 141.935272,111.074768
C142.614975,110.526917 142.779678,110.224220 142.944397,109.921524 C142.944397,109.921532 143.176773,109.554497 143.635193,109.340279
C145.124252,107.866608 146.154877,106.607147 147.185501,105.347694 C147.185501,105.347694 147.485733,105.074348 147.925735,104.915680
C148.538528,104.456520 148.711319,104.156021 148.884109,103.855530 C149.041901,103.578056 149.247330,103.342041 149.974884,103.098984
C150.636948,103.055161 150.824478,103.059845 151.047058,103.134651 C151.082077,103.204781 151.296890,103.193550 151.296890,103.193550
C151.296890,103.193550 151.065384,103.011589 151.060242,102.733826 C151.009506,102.276550 150.963913,102.097046 150.918304,101.917534
C151.332077,101.491318 151.745850,101.065102 152.635773,100.460251 C153.111908,100.281609 153.497894,100.049179 153.789368,100.038872
C154.772659,99.452271 155.464478,98.875984 156.408234,98.117584 C157.490311,97.320854 158.320465,96.706223 159.411987,96.018272
C160.091385,95.613731 160.509415,95.282509 161.005707,94.693756 C161.125443,94.083160 161.166931,93.730095 161.208405,93.377022
C161.208405,93.377022 161.272369,93.281357 161.637833,93.283844 C162.733887,92.659668 163.464478,92.032997 164.195068,91.406326
C164.195068,91.406326 164.565247,91.160652 165.074371,91.083725 C166.115738,90.460403 166.647964,89.913994 167.180191,89.367592
C167.180191,89.367592 167.561722,89.134003 168.067535,89.083694 C169.113785,88.531319 169.654205,88.029266 170.194611,87.527206
C170.534180,87.339554 170.873749,87.151909 171.836243,86.913345 C174.039276,85.751251 175.619370,84.640068 177.199478,83.528885
C177.199478,83.528885 177.351318,83.387817 177.799438,83.385483 C179.820572,82.883362 181.393585,82.383591 183.170273,81.808777
C183.633362,81.599014 183.861649,81.423775 184.373871,81.123398 C185.491287,80.703987 186.293686,80.369202 187.361908,79.991440
C188.096588,79.696411 188.565445,79.444366 189.280243,79.140625 C189.689667,79.052353 189.853149,79.015762 190.210281,78.900085
C190.651642,78.688210 190.867310,78.515427 191.369507,78.235207 C192.110519,78.067825 192.532990,77.967896 193.244263,77.853729
C194.045349,77.588539 194.557632,77.337585 195.404114,77.018097 C196.821823,76.607903 197.905350,76.266235 199.266159,75.907867
C200.036407,75.656876 200.529373,75.422592 201.364365,75.106812 C202.827423,74.692017 203.948425,74.358734 205.380356,74.019363
C206.468277,73.766235 207.245285,73.519203 208.389984,73.226074 C209.493317,73.091133 210.228912,73.002289 211.290283,72.935577
C212.412201,72.683113 213.208344,72.408524 214.267502,72.100060 C214.705307,72.039871 214.880112,72.013565 215.424881,71.999588
C217.201248,71.734070 218.607666,71.456200 220.413910,71.153488 C221.880417,71.070969 222.947083,71.013298 224.279190,71.170303
C226.068039,70.992416 227.591461,70.599854 229.423401,70.196625 C230.143173,70.169228 230.554443,70.152512 231.313034,70.332619
C235.115021,70.382599 238.569687,70.235756 242.491425,70.087082 C280.953430,70.102844 318.948334,70.120430 357.053223,70.529343
C357.455536,73.045441 357.992554,75.169182 358.001373,77.295113 C358.070374,93.940338 358.043671,110.585976 358.034363,127.231491
C358.030548,134.046967 358.016937,134.057816 351.099701,134.059860 C310.817535,134.071823 270.534180,133.934753 230.254730,134.268967
C225.246338,134.310516 220.258575,136.842316 215.230850,138.283905 C215.200439,138.347610 215.065262,138.306870 214.806305,138.286804
C214.115921,138.505325 213.684479,138.743896 213.009598,139.115082 C212.583405,139.275208 212.400635,139.302734 211.833679,139.280731
C208.407166,140.913559 205.364853,142.595886 202.282257,144.308472 C202.241974,144.338730 202.168381,144.269897 201.973877,144.345428
C201.529541,144.568588 201.364868,144.781921 201.061798,145.322937 C200.647766,145.713150 200.457306,145.841385 199.948059,145.977448
C197.417572,147.954681 195.205872,149.924103 192.993881,151.942596 C192.993607,151.991669 192.895477,151.990555 192.549149,152.015503
C187.409988,154.769379 184.238312,158.680161 183.252487,164.111267 C183.188980,163.991821 183.294250,164.239044 182.950150,164.345627
C180.427338,169.367905 177.154861,174.103409 176.308884,179.238663 C174.781265,188.511490 174.320831,198.014923 174.115677,207.437317
C173.843521,219.937164 178.269516,231.196472 184.901489,241.604797 C185.796005,243.008667 187.567444,243.853790 188.990707,244.966980
C189.048599,244.976334 189.032700,245.092545 189.039658,245.443787 C189.760330,247.068161 190.225784,248.594147 191.225662,249.575775
C202.884888,261.022064 217.215424,267.483948 233.244598,267.746521 C272.873535,268.395599 312.520477,268.025818 352.159454,267.873199
C356.777344,267.855408 358.164368,269.300385 358.106323,273.876007 C357.865570,292.859802 357.967224,311.847900 357.480347,330.882874
C338.906525,330.962463 320.795410,331.052429 302.684601,331.010834 C276.765686,330.951324 250.846970,330.795715 224.637268,330.524200
C223.236160,330.268494 222.125992,330.169708 220.602966,330.058136 C219.095612,329.927734 218.001114,329.810120 216.705780,329.546783
C216.025055,329.282104 215.545151,329.163147 214.711487,329.008087 C213.887634,328.910431 213.417526,328.848877 212.660461,328.610291
C211.246506,328.304504 210.119537,328.175751 208.744629,328.011780 C208.333069,327.943604 208.169434,327.910645 207.938263,327.637787
C207.248444,327.303284 206.626129,327.208649 205.594803,327.076263 C204.102722,326.877716 203.019669,326.716858 201.800995,326.447266
C201.471100,326.205719 201.260620,326.107544 200.685684,325.968201 C199.212677,325.508331 198.087952,325.124298 196.745544,324.584839
C196.008286,324.314789 195.488724,324.200195 194.630951,324.040466 C193.850174,323.890259 193.407623,323.785156 192.841400,323.544250
C192.535934,323.239014 192.330688,323.105682 192.067078,322.987274 C192.032166,322.966125 191.968018,322.915680 191.729294,322.721558
C190.699036,322.352661 189.907501,322.177887 188.818344,321.917145 C188.322571,321.773010 188.124420,321.714844 187.806183,321.529083
C187.508530,321.243896 187.309464,321.121094 186.809235,320.966248 C186.343460,320.853546 186.157333,320.807709 185.820770,320.618958
C185.449020,320.300232 185.201187,320.178223 184.579239,320.017242 C183.123337,319.463867 182.015015,319.003296 180.807480,318.445465
C180.565079,318.228424 180.407501,318.132172 179.911469,317.900696 C178.706055,317.357391 177.824753,316.972839 176.813736,316.472290
C176.496887,316.208344 176.292038,316.091339 175.768234,315.863037 C174.296906,315.078705 173.126801,314.436676 171.834732,313.642029
C171.530289,313.298096 171.319397,313.146332 170.800644,312.938660 C170.334427,312.781097 170.147659,312.718903 169.839874,312.529358
C169.543640,312.242981 169.349289,312.112366 168.837830,311.854187 C167.694580,311.463196 166.849335,311.228241 166.004089,310.993286
C166.004089,310.993286 165.584625,310.834839 165.340561,310.390503 C163.548645,308.481201 162.131165,306.841003 160.433350,305.577545
C135.450775,286.986084 120.418205,262.047058 113.761909,231.918289 C110.147652,215.558807 109.790779,198.967697 111.782127,182.339249
C113.832611,165.216965 118.597160,148.944382 127.160858,133.886154 C130.497955,128.018265 133.867905,122.169083 137.222885,116.311386
C137.222885,116.311386 137.227158,116.228470 137.540863,116.214661 C138.211945,116.106445 138.569351,116.012032 139.062988,115.851028
C139.427094,115.546883 139.469406,115.275383 139.372986,114.756676 C139.495758,114.250427 139.475632,113.964195 139.359467,113.684723 z'
/>
<path
xmlns='http://www.w3.org/2000/svg'
fill='#FFC947'
d=' M200.266830,145.969620 C200.457306,145.841385 200.647766,145.713150 201.270264,145.275589
C201.994553,144.826004 202.149918,144.593887 202.168381,144.269897 C202.168381,144.269897 202.241974,144.338730 202.627762,144.274597
C206.081650,142.583710 209.149765,140.956970 212.217880,139.330231 C212.400635,139.302734 212.583405,139.275208 213.260132,139.131683
C214.191147,138.779388 214.628204,138.543121 215.065262,138.306854 C215.065262,138.306870 215.200439,138.347610 215.615753,138.262543
C222.236084,137.117767 228.435684,135.178802 234.646988,135.140549 C276.033936,134.885590 317.423431,135.036758 358.812073,135.055969
C358.822845,178.409409 358.833618,221.762833 358.350433,265.618347 C317.222778,266.132172 276.588776,266.228516 235.955917,266.054840
C230.533264,266.031647 225.031219,265.015839 219.714111,263.807587 C207.453613,261.021515 197.827393,253.684341 189.032700,245.092545
C189.032700,245.092545 189.048599,244.976334 188.932205,244.635071 C178.652054,231.033371 175.024597,215.782471 175.030136,199.385284
C175.034317,187.007950 178.389404,175.448639 183.294250,164.239044 C183.294250,164.239044 183.188980,163.991821 183.536774,163.962189
C186.888184,159.951889 189.891830,155.971222 192.895477,151.990555 C192.895477,151.990555 192.993607,151.991669 193.307098,151.842606
C195.835999,149.785568 198.051407,147.877594 200.266830,145.969620 z'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Clay](https://www.clay.com/) es una plataforma de enriquecimiento de datos y automatización de flujos de trabajo que ayuda a los equipos a agilizar la generación de leads, la investigación y las operaciones de datos a través de integraciones potentes y entradas flexibles.
Aprende a usar la herramienta Clay en Sim para insertar datos sin problemas en un libro de trabajo de Clay a través de disparadores webhook. Este tutorial te guía a través de la configuración de un webhook, la asignación de datos y la automatización de actualizaciones en tiempo real para tus libros de trabajo de Clay. ¡Perfecto para agilizar la generación de leads y el enriquecimiento de datos directamente desde tu flujo de trabajo!
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/cx_75X5sI_s"
title="Integración de Clay con Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Con Clay, puedes:
- **Enriquecer salidas de agentes**: Alimenta automáticamente los datos de tu agente Sim en tablas de Clay para un seguimiento y análisis estructurado
- **Activar flujos de trabajo mediante webhooks**: Usa el soporte de webhook de Clay para iniciar tareas de agentes Sim desde Clay
- **Aprovechar bucles de datos**: Itera sin problemas sobre filas de datos enriquecidos con agentes que operan en conjuntos de datos dinámicos
En Sim, la integración con Clay permite que tus agentes envíen datos estructurados a tablas de Clay a través de webhooks. Esto facilita la recopilación, el enriquecimiento y la gestión de salidas dinámicas como leads, resúmenes de investigación o elementos de acción, todo en una interfaz colaborativa similar a una hoja de cálculo. Tus agentes pueden poblar filas en tiempo real, permitiendo flujos de trabajo asincrónicos donde los conocimientos generados por IA son capturados, revisados y utilizados por tu equipo. Ya sea que estés automatizando investigaciones, enriqueciendo datos de CRM o haciendo seguimiento de resultados operativos, Clay se convierte en una capa de datos viva que interactúa inteligentemente con tus agentes. Al conectar Sim con Clay, obtienes una forma poderosa de operacionalizar los resultados de los agentes, recorrer conjuntos de datos con precisión y mantener un registro limpio y auditable del trabajo impulsado por IA.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Poblar libro de trabajo de Clay con datos usando JSON o texto plano. Permite comunicación directa y notificaciones con confirmación de canal.
## Herramientas
### `clay_populate`
Poblar Clay con datos de un archivo JSON. Permite comunicación directa y notificaciones con seguimiento de marca de tiempo y confirmación de canal.
#### Entrada
| Parámetro | Tipo | Requerido | Descripción |
| --------- | ---- | -------- | ----------- |
| `webhookURL` | string | Sí | La URL del webhook para poblar |
| `data` | json | Sí | Los datos para poblar |
| `authToken` | string | Sí | Token de autenticación para la autenticación del webhook de Clay |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | json | Resultados de la operación de poblado de Clay incluyendo datos de respuesta del webhook de Clay |
## Notas
- Categoría: `tools`
- Tipo: `clay`

View File

@@ -1,97 +0,0 @@
---
title: Confluence
description: Interactúa con Confluence
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="confluence"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 3 21 24'
focusable='false'
fill='none'
aria-hidden='true'
xmlns='http://www.w3.org/2000/svg'
>
<path
fill='#1868DB'
d='M20.602 20.234c-6.584-3.183-8.507-3.66-11.281-3.66-3.255 0-6.03 1.355-8.507 5.16l-.407.622c-.333.513-.407.696-.407.915s.111.403.518.659l4.18 2.598c.221.146.406.22.591.22.222 0 .37-.11.592-.44l.666-1.024c1.035-1.574 1.96-2.086 3.144-2.086 1.035 0 2.256.293 3.772 1.025l4.365 2.049c.444.22.925.11 1.146-.403l2.072-4.537c.222-.512.074-.842-.444-1.098M1.406 12.22c6.583 3.184 8.507 3.66 11.28 3.66 3.256 0 6.03-1.354 8.508-5.16l.407-.622c.332-.512.406-.695.406-.915s-.11-.402-.518-.658L17.31 5.927c-.222-.147-.407-.22-.592-.22-.222 0-.37.11-.592.44l-.665 1.024c-1.036 1.573-1.96 2.086-3.144 2.086-1.036 0-2.257-.293-3.773-1.025L4.18 6.183c-.444-.22-.925-.11-1.147.402L.962 11.123c-.222.512-.074.841.444 1.098'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Confluence](https://www.atlassian.com/software/confluence) es la potente plataforma de colaboración en equipo y gestión del conocimiento de Atlassian. Sirve como un espacio de trabajo centralizado donde los equipos pueden crear, organizar y compartir información entre departamentos y organizaciones.
Con Confluence, puedes:
- **Crear documentación estructurada**: Construir wikis completas, planes de proyectos y bases de conocimiento con formato enriquecido
- **Colaborar en tiempo real**: Trabajar juntos en documentos con compañeros de equipo, con comentarios, menciones y capacidades de edición
- **Organizar la información jerárquicamente**: Estructurar el contenido con espacios, páginas y jerarquías anidadas para una navegación intuitiva
- **Integrar con otras herramientas**: Conectar con Jira, Trello y otros productos de Atlassian para una integración fluida del flujo de trabajo
- **Controlar permisos de acceso**: Gestionar quién puede ver, editar o comentar contenido específico
En Sim, la integración con Confluence permite a tus agentes acceder y aprovechar la base de conocimientos de tu organización. Los agentes pueden recuperar información de las páginas de Confluence, buscar contenido específico e incluso actualizar la documentación cuando sea necesario. Esto permite que tus flujos de trabajo incorporen el conocimiento colectivo almacenado en tu instancia de Confluence, haciendo posible crear agentes que puedan consultar documentación interna, seguir procedimientos establecidos y mantener recursos de información actualizados como parte de sus operaciones.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Conéctate a espacios de trabajo de Confluence para recuperar y buscar documentación. Accede al contenido de las páginas, metadatos e integra la documentación de Confluence en tus flujos de trabajo.
## Herramientas
### `confluence_retrieve`
Recupera contenido de las páginas de Confluence utilizando la API de Confluence.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) |
| `pageId` | string | Sí | ID de la página de Confluence a recuperar |
| `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de la recuperación |
| `pageId` | string | ID de la página de Confluence |
| `content` | string | Contenido de la página con etiquetas HTML eliminadas |
| `title` | string | Título de la página |
### `confluence_update`
Actualiza una página de Confluence utilizando la API de Confluence.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) |
| `pageId` | string | Sí | ID de la página de Confluence a actualizar |
| `title` | string | No | Nuevo título para la página |
| `content` | string | No | Nuevo contenido para la página en formato de almacenamiento de Confluence |
| `version` | number | No | Número de versión de la página \(requerido para prevenir conflictos\) |
| `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `ts` | string | Marca de tiempo de actualización |
| `pageId` | string | ID de página de Confluence |
| `title` | string | Título de página actualizado |
| `success` | boolean | Estado de éxito de la operación de actualización |
## Notas
- Categoría: `tools`
- Tipo: `confluence`

View File

@@ -1,141 +0,0 @@
---
title: Discord
description: Interactúa con Discord
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="discord"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 -28.5 256 256'
version='1.1'
xmlns='http://www.w3.org/2000/svg'
xmlnsXlink='http://www.w3.org/1999/xlink'
preserveAspectRatio='xMidYMid'
>
<g>
<path
d='M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z'
fill='#5865F2'
fillRule='nonzero'
/>
</g>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Discord](https://discord.com) es una potente plataforma de comunicación que te permite conectar con amigos, comunidades y equipos. Ofrece una variedad de funciones para la colaboración en equipo, incluyendo canales de texto, canales de voz y videollamadas.
Con una cuenta o bot de Discord, puedes:
- **Enviar mensajes**: Enviar mensajes a un canal específico
- **Obtener mensajes**: Obtener mensajes de un canal específico
- **Obtener servidor**: Obtener información sobre un servidor específico
- **Obtener usuario**: Obtener información sobre un usuario específico
En Sim, la integración con Discord permite a tus agentes acceder y aprovechar los servidores de Discord de tu organización. Los agentes pueden recuperar información de los canales de Discord, buscar usuarios específicos, obtener información del servidor y enviar mensajes. Esto permite que tus flujos de trabajo se integren con tus comunidades de Discord, automaticen notificaciones y creen experiencias interactivas.
> **Importante:** Para leer el contenido de los mensajes, tu bot de Discord necesita tener habilitado el "Message Content Intent" en el Portal de Desarrolladores de Discord. Sin este permiso, seguirás recibiendo los metadatos del mensaje pero el campo de contenido aparecerá vacío.
Los componentes de Discord en Sim utilizan una carga diferida eficiente, obteniendo datos solo cuando es necesario para minimizar las llamadas a la API y evitar limitaciones de tasa. La actualización de tokens ocurre automáticamente en segundo plano para mantener tu conexión.
### Configuración de tu bot de Discord
1. Ve al [Portal de Desarrolladores de Discord](https://discord.com/developers/applications)
2. Crea una nueva aplicación y navega a la pestaña "Bot"
3. Crea un bot y copia tu token de bot
4. En "Privileged Gateway Intents", habilita el **Message Content Intent** para leer el contenido de los mensajes
5. Invita a tu bot a tus servidores con los permisos apropiados
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Conéctate a Discord para enviar mensajes, gestionar canales e interactuar con servidores. Automatiza notificaciones, gestión de comunidad e integra Discord en tus flujos de trabajo.
## Herramientas
### `discord_send_message`
Enviar un mensaje a un canal de Discord
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `botToken` | string | Sí | El token del bot para autenticación |
| `channelId` | string | Sí | El ID del canal de Discord donde enviar el mensaje |
| `content` | string | No | El contenido de texto del mensaje |
| `serverId` | string | Sí | El ID del servidor de Discord \(ID del guild\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `message` | string | Mensaje de éxito o error |
| `data` | object | Datos del mensaje de Discord |
### `discord_get_messages`
Recuperar mensajes de un canal de Discord
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `botToken` | string | Sí | El token del bot para autenticación |
| `channelId` | string | Sí | El ID del canal de Discord del que recuperar mensajes |
| `limit` | number | No | Número máximo de mensajes a recuperar \(predeterminado: 10, máx: 100\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `message` | string | Mensaje de éxito o error |
| `messages` | array | Array de mensajes de Discord con metadatos completos |
### `discord_get_server`
Recuperar información sobre un servidor de Discord (guild)
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `botToken` | string | Sí | El token del bot para autenticación |
| `serverId` | string | Sí | El ID del servidor de Discord \(ID del guild\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `message` | string | Mensaje de éxito o error |
| `data` | object | Información del servidor de Discord \(guild\) |
### `discord_get_user`
Recuperar información sobre un usuario de Discord
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `botToken` | string | Sí | Token del bot de Discord para autenticación |
| `userId` | string | Sí | El ID del usuario de Discord |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `message` | string | Mensaje de éxito o error |
| `data` | object | Información del usuario de Discord |
## Notas
- Categoría: `tools`
- Tipo: `discord`

View File

@@ -1,67 +0,0 @@
---
title: ElevenLabs
description: Convertir TTS usando ElevenLabs
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="elevenlabs"
color="#181C1E"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 876 876'
fill='none'
>
<path d='M498 138H618V738H498V138Z' fill='currentColor' />
<path d='M258 138H378V738H258V138Z' fill='currentColor' />
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[ElevenLabs](https://elevenlabs.io/) es una plataforma de texto a voz de última generación que crea voces de IA increíblemente naturales y expresivas. Ofrece algunas de las voces sintéticas más realistas y emocionalmente matizadas disponibles actualmente, lo que la hace ideal para crear contenido de audio realista.
Con ElevenLabs, puedes:
- **Generar voz de sonido natural**: Crear audio casi indistinguible del habla humana
- **Elegir entre diversas opciones de voz**: Acceder a una biblioteca de voces prediseñadas con diferentes acentos, tonos y características
- **Clonar voces**: Crear voces personalizadas basadas en muestras de audio (con los permisos adecuados)
- **Controlar parámetros del habla**: Ajustar estabilidad, claridad y tono emocional para perfeccionar el resultado
- **Añadir emociones realistas**: Incorporar emociones de sonido natural como felicidad, tristeza o entusiasmo
En Sim, la integración de ElevenLabs permite a tus agentes convertir texto en voz realista, mejorando la interactividad y el compromiso de tus aplicaciones. Esto es particularmente valioso para crear asistentes de voz, generar contenido de audio, desarrollar aplicaciones accesibles o construir interfaces conversacionales que se sientan más humanas. La integración te permite incorporar sin problemas las capacidades avanzadas de síntesis de voz de ElevenLabs en los flujos de trabajo de tus agentes, cerrando la brecha entre la IA basada en texto y la comunicación humana natural.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Genera voz realista a partir de texto usando las voces de ElevenLabs.
## Herramientas
### `elevenlabs_tts`
Convertir TTS usando voces de ElevenLabs
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `text` | string | Sí | El texto a convertir en voz |
| `voiceId` | string | Sí | El ID de la voz a utilizar |
| `modelId` | string | No | El ID del modelo a utilizar \(por defecto es eleven_monolingual_v1\) |
| `apiKey` | string | Sí | Tu clave API de ElevenLabs |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `audioUrl` | string | La URL del audio generado |
## Notas
- Categoría: `tools`
- Tipo: `elevenlabs`

File diff suppressed because one or more lines are too long

View File

@@ -1,77 +0,0 @@
---
title: Archivo
description: Leer y analizar múltiples archivos
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="file"
color="#40916C"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 0 23 28'
fill='none'
xmlns='http://www.w3.org/2000/svg'
>
<path
d='M8 15.2H15.2M8 20H11.6M2 4.4V23.6C2 24.2365 2.25286 24.847 2.70294 25.2971C3.15303 25.7471 3.76348 26 4.4 26H18.8C19.4365 26 20.047 25.7471 20.4971 25.2971C20.9471 24.847 21.2 24.2365 21.2 23.6V9.6104C21.2 9.29067 21.136 8.97417 21.012 8.67949C20.8879 8.38481 20.7062 8.11789 20.4776 7.8944L15.1496 2.684C14.7012 2.24559 14.0991 2.00008 13.472 2H4.4C3.76348 2 3.15303 2.25286 2.70294 2.70294C2.25286 3.15303 2 3.76348 2 4.4Z'
stroke='currentColor'
strokeWidth='2.25'
strokeLinecap='round'
strokeLinejoin='round'
/>
<path
d='M14 2V6.8C14 7.43652 14.2529 8.04697 14.7029 8.49706C15.153 8.94714 15.7635 9.2 16.4 9.2H21.2'
stroke='currentColor'
strokeWidth='2.25'
strokeLinejoin='round'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
La herramienta de análisis de archivos proporciona una forma potente de extraer y procesar contenido de varios formatos de archivo, facilitando la incorporación de datos de documentos en los flujos de trabajo de tu agente. Esta herramienta es compatible con múltiples formatos de archivo y puede manejar archivos de hasta 200MB de tamaño.
Con el analizador de archivos, puedes:
- **Procesar múltiples formatos de archivo**: Extraer texto de PDFs, CSVs, documentos Word (DOCX), archivos de texto y más
- **Manejar archivos grandes**: Procesar documentos de hasta 200MB de tamaño
- **Analizar archivos desde URLs**: Extraer directamente contenido de archivos alojados en línea proporcionando sus URLs
- **Procesar múltiples archivos a la vez**: Subir y analizar varios archivos en una sola operación
- **Extraer datos estructurados**: Mantener el formato y la estructura de los documentos originales cuando sea posible
La herramienta de análisis de archivos es particularmente útil para escenarios donde tus agentes necesitan trabajar con contenido de documentos, como analizar informes, extraer datos de hojas de cálculo o procesar texto de varias fuentes de documentos. Simplifica el proceso de hacer que el contenido de documentos esté disponible para tus agentes, permitiéndoles trabajar con información almacenada en archivos tan fácilmente como con entrada de texto directa.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Sube y extrae contenido de formatos de archivos estructurados, incluyendo PDFs, hojas de cálculo CSV y documentos Word (DOCX). Puedes proporcionar una URL a un archivo o subir archivos directamente. Analizadores especializados extraen texto y metadatos de cada formato. Puedes subir múltiples archivos a la vez y acceder a ellos individualmente o como un documento combinado.
## Herramientas
### `file_parser`
Analiza uno o más archivos subidos o archivos desde URLs (texto, PDF, CSV, imágenes, etc.)
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `filePath` | string | Sí | Ruta al archivo\(s\). Puede ser una única ruta, URL o un array de rutas. |
| `fileType` | string | No | Tipo de archivo a analizar \(auto-detectado si no se especifica\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `files` | array | Array de archivos analizados |
| `combinedContent` | string | Contenido combinado de todos los archivos analizados |
## Notas
- Categoría: `tools`
- Tipo: `file`

View File

@@ -1,124 +0,0 @@
---
title: Firecrawl
description: Rastrea o busca en la web
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="firecrawl"
color="#181C1E"
icon={true}
iconSvg={`<svg className="block-icon" viewBox='0 0 642 600' xmlns='http://www.w3.org/2000/svg' >
<path
d='M301 63C299 91 303 122 298 149C295 158 289 165 283 169C274 172 266 170 261 167C253 176 248 183 244 191C230 226 226 263 226 301C216 310 203 317 192 310C179 295 175 277 174 259C161 273 153 288 146 304C141 321 138 336 137 352C140 372 145 388 152 402C161 421 174 435 187 449C181 462 165 453 157 450C158 454 161 458 165 461C195 490 231 500 268 509C240 494 211 471 195 442C179 413 172 378 180 344C191 353 200 362 211 364C223 365 232 361 236 353C247 274 299 214 323 143C322 136 327 140 329 142C354 165 367 191 375 218C387 254 381 294 379 329C393 345 413 334 424 329C429 342 432 352 429 362C427 378 417 388 413 400C422 407 433 403 440 400C432 423 419 442 404 460C383 483 358 501 335 512C379 502 420 491 449 459C443 458 427 464 428 452C443 437 464 423 472 403C482 383 485 362 484 339C482 307 472 280 458 254C459 267 452 276 445 284C434 289 426 279 424 272C415 247 424 220 418 198C415 179 405 165 397 150C370 114 336 86 303 64'
fill='rgb(253,76,31)'
/>
<path
d='M324 141C303 214 249 273 244 354C235 359 229 364 223 366C205 367 193 357 182 347C180 350 179 353 180 357C178 374 178 390 182 403C185 421 193 434 200 448C212 465 227 480 243 491C258 500 269 513 285 512C284 508 257 485 252 468C241 450 235 433 233 414C241 415 254 420 263 412C260 387 265 363 273 343C281 323 293 306 310 295C317 289 324 285 330 282C328 307 328 331 329 355C330 368 332 379 338 389C358 394 376 384 388 370C383 386 377 401 371 415C376 414 381 411 385 408C383 421 380 431 376 441C366 467 356 491 334 510C358 499 381 483 400 461C418 442 430 423 440 403C432 404 421 410 413 404C414 386 428 377 427 360C429 349 428 340 424 332C413 336 404 341 392 339C386 338 381 334 379 330C380 292 385 248 371 214C366 195 358 180 349 165C341 155 333 145 323 140'
fill='rgb(254,156,69)'
/>
<path
d='M330 284C309 293 289 311 279 332C267 356 261 383 265 411C256 420 242 418 235 412C237 438 245 459 258 479C269 493 281 507 295 513C288 495 265 472 265 446C272 447 281 454 288 444C296 425 303 407 309 388C317 406 321 427 336 443C346 449 358 446 363 438C355 464 348 489 334 511C344 501 352 491 357 480C370 457 379 435 385 412C380 411 376 416 371 418C376 401 382 386 387 371C379 382 369 388 358 391C348 394 337 392 334 383C324 353 328 316 330 285'
fill='rgb(254,220,87)'
/>
<path
d='M311 389C303 407 297 426 289 445C282 454 273 450 268 445C267 472 285 492 302 512C299 514 297 514 294 514C297 514 299 514 301 514C314 515 325 512 334 513C341 495 355 467 362 443C357 446 351 448 344 447C337 446 334 441 330 438C320 422 316 406 311 391'
fill='rgb(251,250,202)'
/>
<path
d='M187 163C188 181 167 187 164 203C158 215 158 228 159 241C172 233 183 221 188 209C193 194 192 178 188 166'
fill='rgb(253,76,31)'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Firecrawl](https://firecrawl.dev/) es una potente API de extracción de contenido y web scraping que se integra perfectamente en Sim, permitiendo a los desarrolladores extraer contenido limpio y estructurado de cualquier sitio web. Esta integración proporciona una forma sencilla de transformar páginas web en formatos de datos utilizables como Markdown y HTML, preservando el contenido esencial.
Con Firecrawl en Sim, puedes:
- **Extraer contenido limpio**: Eliminar anuncios, elementos de navegación y otras distracciones para obtener solo el contenido principal
- **Convertir a formatos estructurados**: Transformar páginas web en Markdown, HTML o JSON
- **Capturar metadatos**: Extraer metadatos SEO, etiquetas Open Graph y otra información de la página
- **Manejar sitios con uso intensivo de JavaScript**: Procesar contenido de aplicaciones web modernas que dependen de JavaScript
- **Filtrar contenido**: Enfocarse en partes específicas de una página usando selectores CSS
- **Procesar a escala**: Manejar necesidades de scraping de alto volumen con una API confiable
- **Buscar en la web**: Realizar búsquedas web inteligentes y obtener resultados estructurados
- **Rastrear sitios completos**: Rastrear múltiples páginas de un sitio web y agregar su contenido
En Sim, la integración de Firecrawl permite a tus agentes acceder y procesar contenido web de forma programática como parte de sus flujos de trabajo. Las operaciones compatibles incluyen:
- **Scrape**: Extraer contenido estructurado (Markdown, HTML, metadatos) de una sola página web.
- **Search**: Buscar información en la web utilizando las capacidades de búsqueda inteligente de Firecrawl.
- **Crawl**: Rastrear múltiples páginas de un sitio web, devolviendo contenido estructurado y metadatos para cada página.
Esto permite a tus agentes recopilar información de sitios web, extraer datos estructurados y utilizar esa información para tomar decisiones o generar ideas, todo sin tener que navegar por las complejidades del análisis de HTML crudo o la automatización del navegador. Simplemente configura el bloque Firecrawl con tu clave API, selecciona la operación (Scrape, Search o Crawl) y proporciona los parámetros relevantes. Tus agentes pueden comenzar inmediatamente a trabajar con contenido web en un formato limpio y estructurado.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Extrae contenido de cualquier sitio web con web scraping avanzado o busca información en la web. Obtén datos limpios y estructurados de páginas web con opciones para centrarte en el contenido principal, o busca información de forma inteligente a través de la web.
## Herramientas
### `firecrawl_scrape`
Extrae contenido estructurado de páginas web con soporte integral de metadatos. Convierte el contenido a markdown o HTML mientras captura metadatos SEO, etiquetas Open Graph e información de la página.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `url` | string | Sí | La URL de la que extraer contenido |
| `scrapeOptions` | json | No | Opciones para la extracción de contenido |
| `apiKey` | string | Sí | Clave API de Firecrawl |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `markdown` | string | Contenido de la página en formato markdown |
| `html` | string | Contenido HTML sin procesar de la página |
| `metadata` | object | Metadatos de la página incluyendo información SEO y Open Graph |
### `firecrawl_search`
Busca información en la web usando Firecrawl
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `query` | string | Sí | La consulta de búsqueda a utilizar |
| `apiKey` | string | Sí | Clave API de Firecrawl |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `data` | array | Datos de resultados de búsqueda |
### `firecrawl_crawl`
Rastrea sitios web completos y extrae contenido estructurado de todas las páginas accesibles
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `url` | string | Sí | La URL del sitio web a rastrear |
| `limit` | number | No | Número máximo de páginas a rastrear \(predeterminado: 100\) |
| `onlyMainContent` | boolean | No | Extraer solo el contenido principal de las páginas |
| `apiKey` | string | Sí | Clave API de Firecrawl |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `pages` | array | Array de páginas rastreadas con su contenido y metadatos |
## Notas
- Categoría: `tools`
- Tipo: `firecrawl`

View File

@@ -1,28 +0,0 @@
---
title: Webhook
description: Recibe webhooks desde cualquier servicio
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="generic_webhook"
color="#10B981"
icon={true}
iconSvg={`<svg className="block-icon"
fill='currentColor'
viewBox='0 0 24 24'
xmlns='http://www.w3.org/2000/svg'
>
<path d='M17.974 7A4.967 4.967 0 0 0 18 6.5a5.5 5.5 0 1 0-8.672 4.491L7.18 15.114A2.428 2.428 0 0 0 6.496 15 2.5 2.5 0 1 0 9 17.496a2.36 2.36 0 0 0-.93-1.925l2.576-4.943-.41-.241A4.5 4.5 0 1 1 17 6.5a4.8 4.8 0 0 1-.022.452zM6.503 18.999a1.5 1.5 0 1 1 1.496-1.503A1.518 1.518 0 0 1 6.503 19zM18.5 12a5.735 5.735 0 0 0-1.453.157l-2.744-3.941A2.414 2.414 0 0 0 15 6.5a2.544 2.544 0 1 0-1.518 2.284l3.17 4.557.36-.13A4.267 4.267 0 0 1 18.5 13a4.5 4.5 0 1 1-.008 9h-.006a4.684 4.684 0 0 1-3.12-1.355l-.703.71A5.653 5.653 0 0 0 18.49 23h.011a5.5 5.5 0 0 0 0-11zM11 6.5A1.5 1.5 0 1 1 12.5 8 1.509 1.509 0 0 1 11 6.5zM18.5 20a2.5 2.5 0 1 0-2.447-3h-5.05l-.003.497A4.546 4.546 0 0 1 6.5 22 4.526 4.526 0 0 1 2 17.5a4.596 4.596 0 0 1 3.148-4.37l-.296-.954A5.606 5.606 0 0 0 1 17.5 5.532 5.532 0 0 0 6.5 23a5.573 5.573 0 0 0 5.478-5h4.08a2.487 2.487 0 0 0 2.442 2zm0-4a1.5 1.5 0 1 1-1.5 1.5 1.509 1.509 0 0 1 1.5-1.5z' />
<path fill='none' d='M0 0h24v24H0z' />
</svg>`}
/>
## Notas
- Categoría: `triggers`
- Tipo: `generic_webhook`

View File

@@ -1,130 +0,0 @@
---
title: GitHub
description: Interactúa con GitHub o activa flujos de trabajo desde eventos de GitHub
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="github"
color="#181C1E"
icon={true}
iconSvg={`<svg className="block-icon" viewBox='0 0 26 26' xmlns='http://www.w3.org/2000/svg'>
<path
d='M13 0C11.2928 0 9.60235 0.336255 8.02511 0.989566C6.44788 1.64288 5.01477 2.60045 3.80761 3.80761C1.36964 6.24558 0 9.55219 0 13C0 18.746 3.731 23.621 8.892 25.35C9.542 25.454 9.75 25.051 9.75 24.7V22.503C6.149 23.283 5.382 20.761 5.382 20.761C4.784 19.253 3.939 18.85 3.939 18.85C2.756 18.044 4.03 18.07 4.03 18.07C5.33 18.161 6.019 19.409 6.019 19.409C7.15 21.385 9.061 20.8 9.802 20.488C9.919 19.643 10.257 19.071 10.621 18.746C7.735 18.421 4.706 17.303 4.706 12.35C4.706 10.907 5.2 9.75 6.045 8.827C5.915 8.502 5.46 7.15 6.175 5.395C6.175 5.395 7.267 5.044 9.75 6.721C10.777 6.435 11.895 6.292 13 6.292C14.105 6.292 15.223 6.435 16.25 6.721C18.733 5.044 19.825 5.395 19.825 5.395C20.54 7.15 20.085 8.502 19.955 8.827C20.8 9.75 21.294 10.907 21.294 12.35C21.294 17.316 18.252 18.408 15.353 18.733C15.821 19.136 16.25 19.929 16.25 21.138V24.7C16.25 25.051 16.458 25.467 17.121 25.35C22.282 23.608 26 18.746 26 13C26 11.2928 25.6637 9.60235 25.0104 8.02511C24.3571 6.44788 23.3995 5.01477 22.1924 3.80761C20.9852 2.60045 19.5521 1.64288 17.9749 0.989566C16.3977 0.336255 14.7072 0 13 0Z'
fill='currentColor'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[GitHub](https://github.com/) es la plataforma líder mundial para el desarrollo de software y control de versiones usando Git. Proporciona un entorno colaborativo donde los desarrolladores pueden alojar y revisar código, gestionar proyectos y construir software juntos.
Con GitHub, puedes:
- **Alojar repositorios**: Almacena tu código en repositorios públicos o privados con control de versiones
- **Colaborar en el código**: Usa pull requests para proponer cambios, revisar código y fusionar contribuciones
- **Seguimiento de problemas**: Crea, asigna y gestiona issues para organizar el trabajo y seguir errores
- **Automatizar flujos de trabajo**: Usa GitHub Actions para construir, probar y desplegar código automáticamente
- **Gestionar proyectos**: Organiza el trabajo con tableros de proyectos, hitos y seguimiento de tareas
- **Documentar código**: Crea y mantén documentación con GitHub Pages y wikis
En Sim, la integración con GitHub permite a tus agentes interactuar directamente con repositorios y flujos de trabajo de GitHub. Esto posibilita potentes escenarios de automatización como asistencia en revisión de código, gestión de solicitudes de extracción, seguimiento de problemas y exploración de repositorios. Tus agentes pueden obtener datos del repositorio, analizar cambios en el código, publicar comentarios en solicitudes de extracción y realizar otras operaciones de GitHub de forma programática. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tus procesos de desarrollo, permitiendo una colaboración fluida entre tus agentes y tu equipo de desarrollo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Accede a repositorios de GitHub, solicitudes de extracción y comentarios a través de la API de GitHub. Automatiza revisiones de código, gestión de PR e interacciones con repositorios dentro de tu flujo de trabajo. Activa flujos de trabajo desde eventos de GitHub como push, solicitudes de extracción y problemas.
## Herramientas
### `github_pr`
Obtener detalles de PR incluyendo diferencias y archivos modificados
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `owner` | string | Sí | Propietario del repositorio |
| `repo` | string | Sí | Nombre del repositorio |
| `pullNumber` | number | Sí | Número de la solicitud de extracción |
| `apiKey` | string | Sí | Token de API de GitHub |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Resumen de PR legible para humanos |
| `metadata` | object | Metadatos detallados de PR incluyendo cambios en archivos |
### `github_comment`
Crear comentarios en PRs de GitHub
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `owner` | string | Sí | Propietario del repositorio |
| `repo` | string | Sí | Nombre del repositorio |
| `body` | string | Sí | Contenido del comentario |
| `pullNumber` | number | Sí | Número de la solicitud de extracción |
| `path` | string | No | Ruta del archivo para el comentario de revisión |
| `position` | number | No | Número de línea para el comentario de revisión |
| `commentType` | string | No | Tipo de comentario \(pr_comment o file_comment\) |
| `line` | number | No | Número de línea para el comentario de revisión |
| `side` | string | No | Lado del diff \(LEFT o RIGHT\) |
| `commitId` | string | No | El SHA del commit sobre el que comentar |
| `apiKey` | string | Sí | Token de API de GitHub |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Confirmación de comentario legible para humanos |
| `metadata` | object | Metadatos del comentario |
### `github_repo_info`
Recupera metadatos completos del repositorio de GitHub, incluyendo estrellas, bifurcaciones, problemas y lenguaje principal. Compatible con repositorios públicos y privados con autenticación opcional.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `owner` | string | Sí | Propietario del repositorio \(usuario u organización\) |
| `repo` | string | Sí | Nombre del repositorio |
| `apiKey` | string | Sí | Token de acceso personal de GitHub |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Resumen del repositorio legible para humanos |
| `metadata` | object | Metadatos del repositorio |
### `github_latest_commit`
Recupera el último commit de un repositorio de GitHub
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `owner` | string | Sí | Propietario del repositorio \(usuario u organización\) |
| `repo` | string | Sí | Nombre del repositorio |
| `branch` | string | No | Nombre de la rama \(por defecto, la rama predeterminada del repositorio\) |
| `apiKey` | string | Sí | Token de API de GitHub |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Resumen del commit legible para humanos |
| `metadata` | object | Metadatos del commit |
## Notas
- Categoría: `tools`
- Tipo: `github`

View File

@@ -1,142 +0,0 @@
---
title: Gmail
description: Envía Gmail o activa flujos de trabajo desde eventos de Gmail
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="gmail"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 48 48'
>
<path fill='#4caf50' d='M45,16.2l-5,2.75l-5,4.75L35,40h7c1.657,0,3-1.343,3-3V16.2z' />
<path fill='#1e88e5' d='M3,16.2l3.614,1.71L13,23.7V40H6c-1.657,0-3-1.343-3-3V16.2z' />
<polygon
fill='#e53935'
points='35,11.2 24,19.45 13,11.2 12,17 13,23.7 24,31.95 35,23.7 36,17'
/>
<path
fill='#c62828'
d='M3,12.298V16.2l10,7.5V11.2L9.876,8.859C9.132,8.301,8.228,8,7.298,8h0C4.924,8,3,9.924,3,12.298z'
/>
<path
fill='#fbc02d'
d='M45,12.298V16.2l-10,7.5V11.2l3.124-2.341C38.868,8.301,39.772,8,40.702,8h0 C43.076,8,45,9.924,45,12.298z'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Gmail](https://gmail.com) es el popular servicio de correo electrónico de Google que proporciona una plataforma robusta para enviar, recibir y gestionar comunicaciones por correo electrónico. Con más de 1.800 millones de usuarios activos en todo el mundo, Gmail ofrece una experiencia rica en funciones con potentes capacidades de búsqueda, herramientas de organización y opciones de integración.
Con Gmail, puedes:
- **Enviar y recibir correos electrónicos**: Comunícate con contactos a través de una interfaz limpia e intuitiva
- **Organizar mensajes**: Usa etiquetas, carpetas y filtros para mantener tu bandeja de entrada organizada
- **Buscar eficientemente**: Encuentra mensajes específicos rápidamente con la potente tecnología de búsqueda de Google
- **Automatizar flujos de trabajo**: Crea filtros y reglas para procesar automáticamente los correos entrantes
- **Acceder desde cualquier lugar**: Usa Gmail en diferentes dispositivos con contenido y configuraciones sincronizados
- **Integrar con otros servicios**: Conéctate con Google Calendar, Drive y otras herramientas de productividad
En Sim, la integración de Gmail permite a tus agentes enviar, leer y buscar correos electrónicos de forma programática. Esto permite potentes escenarios de automatización como enviar notificaciones, procesar mensajes entrantes, extraer información de correos electrónicos y gestionar flujos de comunicación. Tus agentes pueden redactar y enviar correos electrónicos personalizados, buscar mensajes específicos utilizando la sintaxis de consulta de Gmail y extraer contenido de correos electrónicos para usarlo en otras partes de tu flujo de trabajo. Próximamente, los agentes también podrán escuchar nuevos correos electrónicos en tiempo real, permitiendo flujos de trabajo receptivos que pueden activar acciones basadas en mensajes entrantes. Esta integración cierra la brecha entre tus flujos de trabajo de IA y las comunicaciones por correo electrónico, permitiendo una interacción perfecta con una de las plataformas de comunicación más utilizadas del mundo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integración completa con Gmail mediante autenticación OAuth. Envía mensajes de correo electrónico, lee contenido de correos y activa flujos de trabajo a partir de eventos de Gmail como nuevos correos y cambios de etiquetas.
## Herramientas
### `gmail_send`
Enviar correos electrónicos usando Gmail
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `to` | string | Sí | Dirección de correo electrónico del destinatario |
| `subject` | string | Sí | Asunto del correo electrónico |
| `body` | string | Sí | Contenido del cuerpo del correo electrónico |
| `cc` | string | No | Destinatarios en CC \(separados por comas\) |
| `bcc` | string | No | Destinatarios en CCO \(separados por comas\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Mensaje de éxito |
| `metadata` | object | Metadatos del correo electrónico |
### `gmail_draft`
Crear borradores de correos electrónicos usando Gmail
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `to` | string | Sí | Dirección de correo electrónico del destinatario |
| `subject` | string | Sí | Asunto del correo electrónico |
| `body` | string | Sí | Contenido del cuerpo del correo electrónico |
| `cc` | string | No | Destinatarios en CC \(separados por comas\) |
| `bcc` | string | No | Destinatarios en CCO \(separados por comas\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Mensaje de éxito |
| `metadata` | object | Metadatos del borrador |
### `gmail_read`
Leer correos electrónicos de Gmail
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `messageId` | string | No | ID del mensaje a leer |
| `folder` | string | No | Carpeta/etiqueta desde donde leer los correos |
| `unreadOnly` | boolean | No | Recuperar solo mensajes no leídos |
| `maxResults` | number | No | Número máximo de mensajes a recuperar \(predeterminado: 1, máximo: 10\) |
| `includeAttachments` | boolean | No | Descargar e incluir archivos adjuntos del correo |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Contenido de texto del correo electrónico |
| `metadata` | json | Metadatos del correo electrónico |
| `attachments` | file[] | Archivos adjuntos del correo electrónico |
### `gmail_search`
Buscar correos electrónicos en Gmail
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `query` | string | Sí | Consulta de búsqueda para correos electrónicos |
| `maxResults` | number | No | Número máximo de resultados a devolver |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Resumen de resultados de búsqueda |
| `metadata` | object | Metadatos de búsqueda |
## Notas
- Categoría: `tools`
- Tipo: `gmail`

View File

@@ -1,204 +0,0 @@
---
title: Google Calendar
description: Gestionar eventos de Google Calendar
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_calendar"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
version='1.1'
xmlns='http://www.w3.org/2000/svg'
xmlnsXlink='http://www.w3.org/1999/xlink'
x='0px'
y='0px'
viewBox='0 0 200 200'
enableBackground='new 0 0 200 200'
xmlSpace='preserve'
>
<g>
<g transform='translate(3.75 3.75)'>
<path
fill='#FFFFFF'
d='M148.882,43.618l-47.368-5.263l-57.895,5.263L38.355,96.25l5.263,52.632l52.632,6.579l52.632-6.579
l5.263-53.947L148.882,43.618z'
/>
<path
fill='#1A73E8'
d='M65.211,125.276c-3.934-2.658-6.658-6.539-8.145-11.671l9.132-3.763c0.829,3.158,2.276,5.605,4.342,7.342
c2.053,1.737,4.553,2.592,7.474,2.592c2.987,0,5.553-0.908,7.697-2.724s3.224-4.132,3.224-6.934c0-2.868-1.132-5.211-3.395-7.026
s-5.105-2.724-8.5-2.724h-5.276v-9.039H76.5c2.921,0,5.382-0.789,7.382-2.368c2-1.579,3-3.737,3-6.487
c0-2.447-0.895-4.395-2.684-5.855s-4.053-2.197-6.803-2.197c-2.684,0-4.816,0.711-6.395,2.145s-2.724,3.197-3.447,5.276
l-9.039-3.763c1.197-3.395,3.395-6.395,6.618-8.987c3.224-2.592,7.342-3.895,12.342-3.895c3.697,0,7.026,0.711,9.974,2.145
c2.947,1.434,5.263,3.421,6.934,5.947c1.671,2.539,2.5,5.382,2.5,8.539c0,3.224-0.776,5.947-2.329,8.184
c-1.553,2.237-3.461,3.947-5.724,5.145v0.539c2.987,1.25,5.421,3.158,7.342,5.724c1.908,2.566,2.868,5.632,2.868,9.211
s-0.908,6.776-2.724,9.579c-1.816,2.803-4.329,5.013-7.513,6.618c-3.197,1.605-6.789,2.421-10.776,2.421
C73.408,129.263,69.145,127.934,65.211,125.276z'
/>
<path
fill='#1A73E8'
d='M121.25,79.961l-9.974,7.25l-5.013-7.605l17.987-12.974h6.895v61.197h-9.895L121.25,79.961z'
/>
<path
fill='#EA4335'
d='M148.882,196.25l47.368-47.368l-23.684-10.526l-23.684,10.526l-10.526,23.684L148.882,196.25z'
/>
<path
fill='#34A853'
d='M33.092,172.566l10.526,23.684h105.263v-47.368H43.618L33.092,172.566z'
/>
<path
fill='#4285F4'
d='M12.039-3.75C3.316-3.75-3.75,3.316-3.75,12.039v136.842l23.684,10.526l23.684-10.526V43.618h105.263
l10.526-23.684L148.882-3.75H12.039z'
/>
<path
fill='#188038'
d='M-3.75,148.882v31.579c0,8.724,7.066,15.789,15.789,15.789h31.579v-47.368H-3.75z'
/>
<path
fill='#FBBC04'
d='M148.882,43.618v105.263h47.368V43.618l-23.684-10.526L148.882,43.618z'
/>
<path
fill='#1967D2'
d='M196.25,43.618V12.039c0-8.724-7.066-15.789-15.789-15.789h-31.579v47.368H196.25z'
/>
</g>
</g>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Calendar](https://calendar.google.com) es el potente servicio de calendario y programación de Google que proporciona una plataforma completa para gestionar eventos, reuniones y citas. Con una integración perfecta en todo el ecosistema de Google y una adopción generalizada, Google Calendar ofrece funciones robustas tanto para necesidades de programación personales como profesionales.
Con Google Calendar, puedes:
- **Crear y gestionar eventos**: Programar reuniones, citas y recordatorios con información detallada
- **Enviar invitaciones de calendario**: Notificar y coordinar automáticamente con los asistentes mediante invitaciones por correo electrónico
- **Creación de eventos con lenguaje natural**: Añadir eventos rápidamente usando lenguaje conversacional como "Reunión con Juan mañana a las 3pm"
- **Ver y buscar eventos**: Encontrar y acceder fácilmente a tus eventos programados en múltiples calendarios
- **Gestionar múltiples calendarios**: Organizar diferentes tipos de eventos en varios calendarios
En Sim, la integración con Google Calendar permite a tus agentes crear, leer y gestionar eventos de calendario de forma programática. Esto permite potentes escenarios de automatización como programar reuniones, enviar invitaciones de calendario, comprobar disponibilidad y gestionar detalles de eventos. Tus agentes pueden crear eventos con entrada en lenguaje natural, enviar invitaciones de calendario automatizadas a los asistentes, recuperar información de eventos y listar próximos eventos. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de calendarios, permitiendo una automatización de programación y coordinación perfecta con una de las plataformas de calendario más utilizadas del mundo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra la funcionalidad de Google Calendar para crear, leer, actualizar y listar eventos del calendario dentro de tu flujo de trabajo. Automatiza la programación, verifica la disponibilidad y gestiona eventos utilizando autenticación OAuth. Las invitaciones por correo electrónico se envían de forma asíncrona y la entrega depende de la configuración de Google Calendar de los destinatarios.
## Herramientas
### `google_calendar_create`
Crear un nuevo evento en Google Calendar
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | ID del calendario \(por defecto es el primario\) |
| `summary` | string | Sí | Título/resumen del evento |
| `description` | string | No | Descripción del evento |
| `location` | string | No | Ubicación del evento |
| `startDateTime` | string | Sí | Fecha y hora de inicio \(formato RFC3339, p. ej., 2025-06-03T10:00:00-08:00\) |
| `endDateTime` | string | Sí | Fecha y hora de finalización \(formato RFC3339, p. ej., 2025-06-03T11:00:00-08:00\) |
| `timeZone` | string | No | Zona horaria \(p. ej., America/Los_Angeles\) |
| `attendees` | array | No | Array de direcciones de correo electrónico de los asistentes |
| `sendUpdates` | string | No | Cómo enviar actualizaciones a los asistentes: all, externalOnly o none |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Mensaje de confirmación de creación del evento |
| `metadata` | json | Metadatos del evento creado incluyendo ID, estado y detalles |
### `google_calendar_list`
Listar eventos de Google Calendar
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | ID del calendario \(por defecto es el primario\) |
| `timeMin` | string | No | Límite inferior para eventos \(marca de tiempo RFC3339, p. ej., 2025-06-03T00:00:00Z\) |
| `timeMax` | string | No | Límite superior para eventos \(marca de tiempo RFC3339, p. ej., 2025-06-04T00:00:00Z\) |
| `orderBy` | string | No | Orden de los eventos devueltos \(startTime o updated\) |
| `showDeleted` | boolean | No | Incluir eventos eliminados |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Resumen del recuento de eventos encontrados |
| `metadata` | json | Lista de eventos con tokens de paginación y detalles del evento |
### `google_calendar_get`
Obtener un evento específico de Google Calendar
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | ID del calendario (predeterminado: primario) |
| `eventId` | string | Sí | ID del evento a recuperar |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Mensaje de confirmación de recuperación del evento |
| `metadata` | json | Detalles del evento incluyendo ID, estado, horarios y asistentes |
### `google_calendar_quick_add`
Crear eventos a partir de texto en lenguaje natural
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | ID del calendario (predeterminado: primario) |
| `text` | string | Sí | Texto en lenguaje natural que describe el evento (p. ej., "Reunión con Juan mañana a las 3pm") |
| `attendees` | array | No | Array de direcciones de correo electrónico de los asistentes (también se acepta cadena separada por comas) |
| `sendUpdates` | string | No | Cómo enviar actualizaciones a los asistentes: all, externalOnly o none |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Mensaje de confirmación de creación del evento a partir de lenguaje natural |
| `metadata` | json | Metadatos del evento creado incluyendo detalles analizados |
### `google_calendar_invite`
Invitar asistentes a un evento existente de Google Calendar
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | ID del calendario \(por defecto es el primario\) |
| `eventId` | string | Sí | ID del evento al que invitar asistentes |
| `attendees` | array | Sí | Array de direcciones de correo electrónico de los asistentes a invitar |
| `sendUpdates` | string | No | Cómo enviar actualizaciones a los asistentes: all, externalOnly, o none |
| `replaceExisting` | boolean | No | Si reemplazar a los asistentes existentes o añadirlos \(por defecto es false\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Mensaje de confirmación de invitación a asistentes con estado de entrega de correo electrónico |
| `metadata` | json | Metadatos actualizados del evento incluyendo lista de asistentes y detalles |
## Notas
- Categoría: `tools`
- Tipo: `google_calendar`

View File

@@ -1,144 +0,0 @@
---
title: Google Docs
description: Lee, escribe y crea documentos
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_docs"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 48 48'
>
<path
fill='#2196f3'
d='M37,45H11c-1.657,0-3-1.343-3-3V6c0-1.657,1.343-3,3-3h19l10,10v29C40,43.657,38.657,45,37,45z'
/>
<path fill='#bbdefb' d='M40 13L30 13 30 3z' />
<path fill='#1565c0' d='M30 13L40 23 40 13z' />
<path fill='#e3f2fd' d='M15 23H33V25H15zM15 27H33V29H15zM15 31H33V33H15zM15 35H25V37H15z' />
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Docs](https://docs.google.com) es un potente servicio de creación y edición de documentos basado en la nube que permite a los usuarios crear, editar y colaborar en documentos en tiempo real. Como parte de la suite de productividad de Google, Google Docs ofrece una plataforma versátil para documentos de texto con sólidas capacidades de formato, comentarios y compartición.
Aprende cómo integrar la herramienta "Leer" de Google Docs en Sim para obtener datos de tus documentos sin esfuerzo e integrarlos en tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Docs, la configuración de lecturas de datos y el uso de esa información para automatizar procesos en tiempo real. Perfecto para sincronizar datos en vivo con tus agentes.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/f41gy9rBHhE"
title="Usa la herramienta Leer de Google Docs en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Aprende cómo integrar la herramienta "Actualizar" de Google Docs en Sim para añadir contenido en tus documentos sin esfuerzo a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Docs, la configuración de escrituras de datos y el uso de esa información para automatizar actualizaciones de documentos de manera fluida. Perfecto para mantener documentación dinámica en tiempo real con un mínimo esfuerzo.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/L64ROHS2ivA"
title="Usa la herramienta Actualizar de Google Docs en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Aprende cómo integrar la herramienta "Crear" de Google Docs en Sim para generar nuevos documentos sin esfuerzo a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Docs, la configuración de creación de documentos y el uso de datos de flujo de trabajo para poblar contenido automáticamente. Perfecto para agilizar la generación de documentos y mejorar la productividad.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/lWpHH4qddWk"
title="Usa la herramienta de creación de Google Docs en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Con Google Docs, puedes:
- **Crear y editar documentos**: Desarrolla documentos de texto con opciones completas de formato
- **Colaborar en tiempo real**: Trabaja simultáneamente con múltiples usuarios en el mismo documento
- **Seguir los cambios**: Visualiza el historial de revisiones y restaura versiones anteriores
- **Comentar y sugerir**: Proporciona retroalimentación y propón ediciones sin cambiar el contenido original
- **Acceder desde cualquier lugar**: Usa Google Docs en diferentes dispositivos con sincronización automática en la nube
- **Trabajar sin conexión**: Continúa trabajando sin conexión a internet con cambios que se sincronizan al volver a conectarte
- **Integrar con otros servicios**: Conéctate con Google Drive, Sheets, Slides y aplicaciones de terceros
En Sim, la integración con Google Docs permite a tus agentes interactuar directamente con el contenido de los documentos de forma programática. Esto permite potentes escenarios de automatización como creación de documentos, extracción de contenido, edición colaborativa y gestión de documentos. Tus agentes pueden leer documentos existentes para extraer información, escribir en documentos para actualizar contenido y crear nuevos documentos desde cero. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de documentos, permitiendo una interacción perfecta con una de las plataformas de documentos más utilizadas del mundo. Al conectar Sim con Google Docs, puedes automatizar flujos de trabajo de documentos, generar informes, extraer información de documentos y mantener la documentación, todo a través de tus agentes inteligentes.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra la funcionalidad de Google Docs para gestionar documentos. Lee contenido de documentos existentes, escribe en documentos y crea nuevos documentos utilizando autenticación OAuth. Compatible con manipulación de contenido de texto para la creación y edición de documentos.
## Herramientas
### `google_docs_read`
Leer contenido de un documento de Google Docs
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `documentId` | string | Sí | El ID del documento a leer |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | Contenido de texto extraído del documento |
| `metadata` | json | Metadatos del documento incluyendo ID, título y URL |
### `google_docs_write`
Escribir o actualizar contenido en un documento de Google Docs
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `documentId` | string | Sí | El ID del documento en el que escribir |
| `content` | string | Sí | El contenido a escribir en el documento |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `updatedContent` | boolean | Indica si el contenido del documento se actualizó correctamente |
| `metadata` | json | Metadatos del documento actualizado incluyendo ID, título y URL |
### `google_docs_create`
Crear un nuevo documento de Google Docs
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `title` | string | Sí | El título del documento a crear |
| `content` | string | No | El contenido del documento a crear |
| `folderSelector` | string | No | Seleccionar la carpeta donde crear el documento |
| `folderId` | string | No | El ID de la carpeta donde crear el documento \(uso interno\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `metadata` | json | Metadatos del documento creado, incluyendo ID, título y URL |
## Notas
- Categoría: `tools`
- Tipo: `google_docs`

View File

@@ -1,140 +0,0 @@
---
title: Google Drive
description: Crear, subir y listar archivos
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_drive"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 87.3 78'
>
<path
d='m6.6 66.85 3.85 6.65c.8 1.4 1.95 2.5 3.3 3.3l13.75-23.8h-27.5c0 1.55.4 3.1 1.2 4.5z'
fill='#0066da'
/>
<path
d='m43.65 25-13.75-23.8c-1.35.8-2.5 1.9-3.3 3.3l-25.4 44a9.06 9.06 0 0 0 -1.2 4.5h27.5z'
fill='#00ac47'
/>
<path
d='m73.55 76.8c1.35-.8 2.5-1.9 3.3-3.3l1.6-2.75 7.65-13.25c.8-1.4 1.2-2.95 1.2-4.5h-27.502l5.852 11.5z'
fill='#ea4335'
/>
<path
d='m43.65 25 13.75-23.8c-1.35-.8-2.9-1.2-4.5-1.2h-18.5c-1.6 0-3.15.45-4.5 1.2z'
fill='#00832d'
/>
<path
d='m59.8 53h-32.3l-13.75 23.8c1.35.8 2.9 1.2 4.5 1.2h50.8c1.6 0 3.15-.45 4.5-1.2z'
fill='#2684fc'
/>
<path
d='m73.4 26.5-12.7-22c-.8-1.4-1.95-2.5-3.3-3.3l-13.75 23.8 16.15 28h27.45c0-1.55-.4-3.1-1.2-4.5z'
fill='#ffba00'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Drive](https://drive.google.com) es el servicio de almacenamiento en la nube y sincronización de archivos de Google que permite a los usuarios almacenar archivos, sincronizarlos entre dispositivos y compartirlos con otros. Como componente central del ecosistema de productividad de Google, Google Drive ofrece capacidades robustas de almacenamiento, organización y colaboración.
Aprende cómo integrar la herramienta Google Drive en Sim para extraer información de tu Drive sin esfuerzo a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Drive, la configuración de la recuperación de datos y el uso de documentos y archivos almacenados para mejorar la automatización. Perfecto para sincronizar datos importantes con tus agentes en tiempo real.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/cRoRr4b-EAs"
title="Usa la herramienta Google Drive en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Con Google Drive, puedes:
- **Almacenar archivos en la nube**: Sube y accede a tus archivos desde cualquier lugar con acceso a internet
- **Organizar contenido**: Crea carpetas, usa códigos de color e implementa convenciones de nomenclatura
- **Compartir y colaborar**: Controla los permisos de acceso y trabaja simultáneamente en archivos
- **Buscar eficientemente**: Encuentra archivos rápidamente con la potente tecnología de búsqueda de Google
- **Acceder desde varios dispositivos**: Usa Google Drive en plataformas de escritorio, móviles y web
- **Integrar con otros servicios**: Conéctate con Google Docs, Sheets, Slides y aplicaciones de terceros
En Sim, la integración con Google Drive permite a tus agentes interactuar directamente con tu almacenamiento en la nube de forma programática. Esto permite potentes escenarios de automatización como gestión de archivos, organización de contenido y flujos de trabajo de documentos. Tus agentes pueden subir nuevos archivos a carpetas específicas, descargar archivos existentes para procesar su contenido y listar el contenido de carpetas para navegar por la estructura de almacenamiento. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tu sistema de gestión de documentos, permitiendo operaciones de archivos sin intervención manual. Al conectar Sim con Google Drive, puedes automatizar flujos de trabajo basados en archivos, gestionar documentos de manera inteligente e incorporar operaciones de almacenamiento en la nube a las capacidades de tu agente.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra la funcionalidad de Google Drive para gestionar archivos y carpetas. Sube nuevos archivos, obtén contenido de archivos existentes, crea nuevas carpetas y lista el contenido de carpetas utilizando autenticación OAuth. Compatible con operaciones de archivos con tipos MIME personalizados y organización de carpetas.
## Herramientas
### `google_drive_upload`
Subir un archivo a Google Drive
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `fileName` | string | Sí | El nombre del archivo a subir |
| `content` | string | Sí | El contenido del archivo a subir |
| `mimeType` | string | No | El tipo MIME del archivo a subir |
| `folderSelector` | string | No | Selecciona la carpeta donde subir el archivo |
| `folderId` | string | No | El ID de la carpeta donde subir el archivo \(uso interno\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `file` | json | Metadatos del archivo subido incluyendo ID, nombre y enlaces |
### `google_drive_create_folder`
Crear una nueva carpeta en Google Drive
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `fileName` | string | Sí | Nombre de la carpeta a crear |
| `folderSelector` | string | No | Seleccionar la carpeta principal donde crear la carpeta |
| `folderId` | string | No | ID de la carpeta principal \(uso interno\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `file` | json | Metadatos de la carpeta creada incluyendo ID, nombre e información de la carpeta principal |
### `google_drive_list`
Listar archivos y carpetas en Google Drive
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `folderSelector` | string | No | Seleccionar la carpeta de la que listar archivos |
| `folderId` | string | No | El ID de la carpeta de la que listar archivos \(uso interno\) |
| `query` | string | No | Una consulta para filtrar los archivos |
| `pageSize` | number | No | El número de archivos a devolver |
| `pageToken` | string | No | El token de página para usar en la paginación |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `files` | json | Array de objetos de metadatos de archivos de la carpeta especificada |
## Notas
- Categoría: `tools`
- Tipo: `google_drive`

View File

@@ -1,86 +0,0 @@
---
title: Búsqueda de Google
description: Buscar en la web
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_search"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon" xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' >
<path
fill='#fbc02d'
d='M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12 s5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24s8.955,20,20,20 s20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z'
/>
<path
fill='#e53935'
d='M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039 l5.657-5.657C34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z'
/>
<path
fill='#4caf50'
d='M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36 c-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z'
/>
<path
fill='#1565c0'
d='M43.611,20.083L43.595,20L42,20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571 c0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Search](https://www.google.com) es el motor de búsqueda más utilizado del mundo, que proporciona acceso a miles de millones de páginas web y fuentes de información. Google Search utiliza algoritmos sofisticados para ofrecer resultados de búsqueda relevantes basados en las consultas de los usuarios, lo que lo convierte en una herramienta esencial para encontrar información en internet.
Aprende cómo integrar la herramienta de Google Search en Sim para obtener sin esfuerzo resultados de búsqueda en tiempo real a través de tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Search, la configuración de consultas de búsqueda y el uso de datos en vivo para mejorar la automatización. Perfecto para potenciar tus agentes con información actualizada y toma de decisiones más inteligente.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/1B7hV9b5UMQ"
title="Usa la herramienta de Google Search en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Con Google Search, puedes:
- **Encontrar información relevante**: Accede a miles de millones de páginas web con los potentes algoritmos de búsqueda de Google
- **Obtener resultados específicos**: Utiliza operadores de búsqueda para refinar y dirigir tus consultas
- **Descubrir contenido diverso**: Encuentra texto, imágenes, videos, noticias y otros tipos de contenido
- **Acceder a gráficos de conocimiento**: Obtén información estructurada sobre personas, lugares y cosas
- **Utilizar funciones de búsqueda**: Aprovecha herramientas de búsqueda especializadas como calculadoras, convertidores de unidades y más
En Sim, la integración de Google Search permite a tus agentes buscar en la web de forma programática e incorporar resultados de búsqueda en sus flujos de trabajo. Esto permite escenarios de automatización potentes como investigación, verificación de hechos, recopilación de datos y síntesis de información. Tus agentes pueden formular consultas de búsqueda, recuperar resultados relevantes y extraer información de esos resultados para tomar decisiones o generar ideas. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la vasta información disponible en la web, permitiendo a tus agentes acceder a información actualizada de toda internet. Al conectar Sim con Google Search, puedes crear agentes que se mantengan informados con la información más reciente, verifiquen hechos, realicen investigaciones y proporcionen a los usuarios contenido web relevante, todo sin salir de tu flujo de trabajo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Busca en la web utilizando la API de Google Custom Search, que proporciona resultados de búsqueda de alta calidad de toda internet o de un sitio específico definido por un ID de motor de búsqueda personalizado.
## Herramientas
### `google_search`
Buscar en la web con la API de Custom Search
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `query` | string | Sí | La consulta de búsqueda a ejecutar |
| `searchEngineId` | string | Sí | ID del motor de búsqueda personalizado |
| `num` | string | No | Número de resultados a devolver \(predeterminado: 10, máximo: 10\) |
| `apiKey` | string | Sí | Clave de API de Google |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `items` | array | Array de resultados de búsqueda de Google |
## Notas
- Categoría: `tools`
- Tipo: `google_search`

View File

@@ -1,197 +0,0 @@
---
title: Google Sheets
description: Leer, escribir y actualizar datos
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="google_sheets"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 48 48'
>
<path
fill='#43a047'
d='M37,45H11c-1.657,0-3-1.343-3-3V6c0-1.657,1.343-3,3-3h19l10,10v29C40,43.657,38.657,45,37,45z'
/>
<path fill='#c8e6c9' d='M40 13L30 13 30 3z' />
<path fill='#2e7d32' d='M30 13L40 23 40 13z' />
<path
fill='#e8f5e9'
d='M31,23H17h-2v2v2v2v2v2v2v2h18v-2v-2v-2v-2v-2v-2v-2H31z M17,25h4v2h-4V25z M17,29h4v2h-4V29z M17,33h4v2h-4V33z M31,35h-8v-2h8V35z M31,31h-8v-2h8V31z M31,27h-8v-2h8V27z'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Google Sheets](https://sheets.google.com) es una potente aplicación de hojas de cálculo basada en la nube que permite a los usuarios crear, editar y colaborar en hojas de cálculo en tiempo real. Como parte del conjunto de productividad de Google, Google Sheets ofrece una plataforma versátil para la organización, análisis y visualización de datos con sólidas capacidades de formato, fórmulas y opciones para compartir.
Aprende cómo integrar la herramienta "Leer" de Google Sheets en Sim para obtener datos de tus hojas de cálculo sin esfuerzo e integrarlos en tus flujos de trabajo. Este tutorial te guía a través de la conexión con Google Sheets, la configuración de lecturas de datos y el uso de esa información para automatizar procesos en tiempo real. Perfecto para sincronizar datos en vivo con tus agentes.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/xxP7MZRuq_0"
title="Usa la herramienta Leer de Google Sheets en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Descubre cómo usar la herramienta "Escribir" de Google Sheets en Sim para enviar automáticamente datos desde tus flujos de trabajo a tus hojas de cálculo de Google. Este tutorial cubre la configuración de la integración, la configuración de operaciones de escritura y la actualización de tus hojas sin problemas a medida que se ejecutan los flujos de trabajo. Perfecto para mantener registros en tiempo real sin entrada manual.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/cO86qTj7qeY"
title="Usa la herramienta Escribir de Google Sheets en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Explora cómo aprovechar la herramienta "Actualizar" de Google Sheets en Sim para modificar entradas existentes en tus hojas de cálculo basadas en la ejecución del flujo de trabajo. Este tutorial demuestra cómo configurar la lógica de actualización, mapear campos de datos y sincronizar cambios instantáneamente. Perfecto para mantener tus datos actualizados y consistentes.
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/95by2fL9yn4"
title="Usa la herramienta de actualización de Google Sheets en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Aprende a usar la herramienta "Añadir" de Google Sheets en Sim para agregar sin esfuerzo nuevas filas de datos a tus hojas de cálculo durante la ejecución del flujo de trabajo. Este tutorial te guía a través de la configuración de la integración, la configuración de acciones de añadir y asegurando un crecimiento fluido de datos. ¡Perfecto para expandir registros sin esfuerzo manual!
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/8DgNvLBCsAo"
title="Usa la herramienta Añadir de Google Sheets en Sim"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
Con Google Sheets, puedes:
- **Crear y editar hojas de cálculo**: Desarrolla documentos basados en datos con opciones completas de formato y cálculo
- **Colaborar en tiempo real**: Trabaja simultáneamente con múltiples usuarios en la misma hoja de cálculo
- **Analizar datos**: Usa fórmulas, funciones y tablas dinámicas para procesar y entender tus datos
- **Visualizar información**: Crea gráficos, diagramas y formato condicional para representar datos visualmente
- **Acceder desde cualquier lugar**: Usa Google Sheets en diferentes dispositivos con sincronización automática en la nube
- **Trabajar sin conexión**: Continúa trabajando sin conexión a internet con cambios que se sincronizan cuando vuelves a estar en línea
- **Integrar con otros servicios**: Conéctate con Google Drive, Forms y aplicaciones de terceros
En Sim, la integración con Google Sheets permite a tus agentes interactuar directamente con datos de hojas de cálculo de forma programática. Esto permite potentes escenarios de automatización como extracción de datos, análisis, informes y gestión. Tus agentes pueden leer hojas de cálculo existentes para extraer información, escribir en hojas de cálculo para actualizar datos y crear nuevas hojas de cálculo desde cero. Esta integración cierra la brecha entre tus flujos de trabajo de IA y la gestión de datos, permitiendo una interacción fluida con datos estructurados. Al conectar Sim con Google Sheets, puedes automatizar flujos de trabajo de datos, generar informes, extraer información de los datos y mantener información actualizada - todo a través de tus agentes inteligentes. La integración admite varios formatos de datos y especificaciones de rangos, haciéndola lo suficientemente flexible para manejar diversas necesidades de gestión de datos mientras mantiene la naturaleza colaborativa y accesible de Google Sheets.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra la funcionalidad de Google Sheets para gestionar datos de hojas de cálculo. Lee datos de rangos específicos, escribe nuevos datos, actualiza celdas existentes y añade datos al final de las hojas utilizando autenticación OAuth. Compatible con varios formatos de entrada y salida para un manejo flexible de datos.
## Herramientas
### `google_sheets_read`
Leer datos de una hoja de cálculo de Google Sheets
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo de la que leer |
| `range` | string | No | El rango de celdas del que leer |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `data` | json | Datos de la hoja incluyendo rango y valores de celdas |
| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
### `google_sheets_write`
Escribir datos en una hoja de cálculo de Google Sheets
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo en la que escribir |
| `range` | string | No | El rango de celdas en el que escribir |
| `values` | array | Sí | Los datos a escribir en la hoja de cálculo |
| `valueInputOption` | string | No | El formato de los datos a escribir |
| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores escritos en la respuesta |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `updatedRange` | string | Rango de celdas que fueron actualizadas |
| `updatedRows` | number | Número de filas actualizadas |
| `updatedColumns` | number | Número de columnas actualizadas |
| `updatedCells` | number | Número de celdas actualizadas |
| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
### `google_sheets_update`
Actualizar datos en una hoja de cálculo de Google Sheets
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo a actualizar |
| `range` | string | No | El rango de celdas a actualizar |
| `values` | array | Sí | Los datos para actualizar en la hoja de cálculo |
| `valueInputOption` | string | No | El formato de los datos a actualizar |
| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores actualizados en la respuesta |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `updatedRange` | string | Rango de celdas que fueron actualizadas |
| `updatedRows` | number | Número de filas actualizadas |
| `updatedColumns` | number | Número de columnas actualizadas |
| `updatedCells` | number | Número de celdas actualizadas |
| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
### `google_sheets_append`
Añadir datos al final de una hoja de cálculo de Google Sheets
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo a la que añadir datos |
| `range` | string | No | El rango de celdas después del cual añadir datos |
| `values` | array | Sí | Los datos a añadir a la hoja de cálculo |
| `valueInputOption` | string | No | El formato de los datos a añadir |
| `insertDataOption` | string | No | Cómo insertar los datos \(OVERWRITE o INSERT_ROWS\) |
| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores añadidos en la respuesta |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `tableRange` | string | Rango de la tabla donde se añadieron los datos |
| `updatedRange` | string | Rango de celdas que fueron actualizadas |
| `updatedRows` | number | Número de filas actualizadas |
| `updatedColumns` | number | Número de columnas actualizadas |
| `updatedCells` | number | Número de celdas actualizadas |
| `metadata` | json | Metadatos de la hoja de cálculo incluyendo ID y URL |
## Notas
- Categoría: `tools`
- Tipo: `google_sheets`

File diff suppressed because one or more lines are too long

View File

@@ -1,206 +0,0 @@
---
title: Hunter io
description: Encuentra y verifica direcciones de correo electrónico profesionales
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="hunter"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 0 20 19'
fill='none'
xmlns='http://www.w3.org/2000/svg'
>
<path
d='M12.0671 8.43455C11.6625 8.55094 11.2164 8.55288 10.7992 8.53525C10.3141 8.51472 9.80024 8.45339 9.35223 8.25426C8.98359 8.09047 8.68787 7.79493 8.84262 7.36805C8.95175 7.06699 9.19361 6.79803 9.47319 6.64644C9.78751 6.4759 10.1329 6.50361 10.4474 6.65774C10.8005 6.83082 11.0942 7.11235 11.3604 7.3964C11.5 7.54536 11.6332 7.70002 11.7646 7.85617C11.8252 7.92801 12.2364 8.33865 12.0671 8.43455ZM18.7923 8.58131C18.17 8.43655 17.4348 8.4884 16.811 8.38867C15.8284 8.23146 14.3648 7.08576 13.5714 5.92122C13.0201 5.11202 12.757 4.28785 12.3356 3.28356C12.0415 2.58257 11.4001 0.365389 10.5032 1.40318C10.1339 1.83057 9.7204 3.23752 9.41837 3.2177C9.19467 3.26971 9.15818 2.83371 9.08739 2.64738C8.95886 2.30903 8.89071 1.9176 8.7185 1.59854C8.58086 1.34353 8.40014 1.03806 8.12337 0.91412C7.63027 0.660572 7.03575 1.42476 6.74072 2.33095C6.61457 2.81687 5.76653 3.75879 5.39721 3.9866C3.71684 5.02352 0.344233 6.11595 0.000262184 9.75358C-0.00114142 9.76867 0.000262182 9.81455 0.0573714 9.77323C0.459591 9.48197 5.02183 6.19605 2.09392 12.5476C0.300195 16.439 8.96062 18.917 9.40582 18.9271C9.46582 18.9284 9.46144 18.9011 9.46347 18.8832C10.1546 12.6724 16.9819 13.3262 18.5718 11.8387C20.1474 10.3649 20.1796 8.93816 18.7923 8.58131Z'
fill='#FA5320'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Hunter.io](https://hunter.io/) es una plataforma líder para encontrar y verificar direcciones de correo electrónico profesionales, descubrir empresas y enriquecer datos de contacto. Hunter.io proporciona APIs robustas para búsqueda de dominios, búsqueda de correos electrónicos, verificación y descubrimiento de empresas, convirtiéndola en una herramienta esencial para ventas, reclutamiento y desarrollo de negocios.
Con Hunter.io, puedes:
- **Encontrar direcciones de correo electrónico por dominio:** Busca todas las direcciones de correo electrónico disponibles públicamente asociadas con un dominio de empresa específico.
- **Descubrir empresas:** Utiliza filtros avanzados y búsqueda potenciada por IA para encontrar empresas que coincidan con tus criterios.
- **Encontrar una dirección de correo electrónico específica:** Localiza la dirección de correo electrónico más probable para una persona en una empresa utilizando su nombre y dominio.
- **Verificar direcciones de correo electrónico:** Comprueba la entregabilidad y validez de cualquier dirección de correo electrónico.
- **Enriquecer datos de empresa:** Obtén información detallada sobre empresas, incluyendo tamaño, tecnologías utilizadas y más.
En Sim, la integración con Hunter.io permite a tus agentes buscar y verificar direcciones de correo electrónico de forma programática, descubrir empresas y enriquecer datos de contacto utilizando la API de Hunter.io. Esto te permite automatizar la generación de leads, el enriquecimiento de contactos y la verificación de correos electrónicos directamente dentro de tus flujos de trabajo. Tus agentes pueden aprovechar las herramientas de Hunter.io para agilizar el alcance, mantener tu CRM actualizado y potenciar escenarios de automatización inteligente para ventas, reclutamiento y más.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Busca direcciones de correo electrónico, verifica su entregabilidad, descubre empresas y enriquece datos de contacto utilizando las potentes capacidades de búsqueda de correos electrónicos de Hunter.io.
## Herramientas
### `hunter_discover`
Devuelve empresas que coinciden con un conjunto de criterios utilizando la búsqueda potenciada por IA de Hunter.io.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `query` | string | No | Consulta de búsqueda en lenguaje natural para empresas |
| `domain` | string | No | Nombres de dominio de empresas para filtrar |
| `headcount` | string | No | Filtro de tamaño de empresa \(p. ej., "1-10", "11-50"\) |
| `company_type` | string | No | Tipo de organización |
| `technology` | string | No | Tecnología utilizada por las empresas |
| `apiKey` | string | Sí | Clave API de Hunter.io |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `results` | array | Array de empresas que coinciden con los criterios de búsqueda, cada una contiene dominio, nombre, recuento de personal, tecnologías y email_count |
### `hunter_domain_search`
Devuelve todas las direcciones de correo electrónico encontradas utilizando un nombre de dominio dado, con fuentes.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `domain` | string | Sí | Nombre de dominio para buscar direcciones de correo electrónico |
| `limit` | number | No | Máximo de direcciones de correo electrónico a devolver \(predeterminado: 10\) |
| `offset` | number | No | Número de direcciones de correo electrónico a omitir |
| `type` | string | No | Filtro para correos personales o genéricos |
| `seniority` | string | No | Filtrar por nivel de antigüedad: junior, senior o ejecutivo |
| `department` | string | No | Filtrar por departamentos específicos \(p. ej., ventas, marketing\) |
| `apiKey` | string | Sí | Clave API de Hunter.io |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `domain` | string | El nombre de dominio buscado |
| `disposable` | boolean | Si el dominio acepta direcciones de correo desechables |
| `webmail` | boolean | Si el dominio es un proveedor de webmail |
| `accept_all` | boolean | Si el dominio acepta todas las direcciones de correo |
| `pattern` | string | El patrón de correo electrónico utilizado por la organización |
| `organization` | string | El nombre de la organización |
| `description` | string | Descripción de la organización |
| `industry` | string | Sector de la organización |
| `twitter` | string | Perfil de Twitter de la organización |
| `facebook` | string | Perfil de Facebook de la organización |
| `linkedin` | string | Perfil de LinkedIn de la organización |
| `instagram` | string | Perfil de Instagram de la organización |
| `youtube` | string | Canal de YouTube de la organización |
| `technologies` | array | Array de tecnologías utilizadas por la organización |
| `country` | string | País donde se encuentra la organización |
| `state` | string | Estado donde se encuentra la organización |
| `city` | string | Ciudad donde se encuentra la organización |
| `postal_code` | string | Código postal de la organización |
| `street` | string | Dirección de la organización |
| `emails` | array | Array de direcciones de correo encontradas para el dominio, cada una contiene valor, tipo, confianza, fuentes y detalles de la persona |
### `hunter_email_finder`
Encuentra la dirección de correo electrónico más probable para una persona dado su nombre y el dominio de la empresa.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Yes | Nombre del dominio de la empresa |
| `first_name` | string | Yes | Nombre de la persona |
| `last_name` | string | Yes | Apellido de la persona |
| `company` | string | No | Nombre de la empresa |
| `apiKey` | string | Yes | Clave API de Hunter.io |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `email` | string | La dirección de correo electrónico encontrada |
| `score` | number | Puntuación de confianza para la dirección de correo electrónico encontrada |
| `sources` | array | Array de fuentes donde se encontró el correo electrónico, cada una contiene domain, uri, extracted_on, last_seen_on y still_on_page |
| `verification` | object | Información de verificación que contiene fecha y estado |
### `hunter_email_verifier`
Verifica la entregabilidad de una dirección de correo electrónico y proporciona un estado de verificación detallado.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `email` | string | Yes | La dirección de correo electrónico a verificar |
| `apiKey` | string | Yes | Clave API de Hunter.io |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `result` | string | Resultado de entregabilidad: deliverable, undeliverable o risky |
| `score` | number | Puntuación de confianza para el resultado de verificación |
| `email` | string | La dirección de correo electrónico verificada |
| `regexp` | boolean | Si el correo electrónico sigue un patrón regex válido |
| `gibberish` | boolean | Si el correo electrónico parece ser incoherente |
| `disposable` | boolean | Si el correo electrónico es de un proveedor de correo desechable |
| `webmail` | boolean | Si el correo electrónico es de un proveedor de webmail |
| `mx_records` | boolean | Si existen registros MX para el dominio |
| `smtp_server` | boolean | Si el servidor SMTP es accesible |
| `smtp_check` | boolean | Si la comprobación SMTP fue exitosa |
| `accept_all` | boolean | Si el dominio acepta todas las direcciones de correo electrónico |
| `block` | boolean | Si el correo electrónico está bloqueado |
| `status` | string | Estado de verificación: valid, invalid, accept_all, webmail, disposable o unknown |
| `sources` | array | Array de fuentes donde se encontró el correo electrónico |
### `hunter_companies_find`
Enriquece los datos de la empresa utilizando el nombre de dominio.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Dominio para encontrar datos de la empresa |
| `apiKey` | string | Sí | Clave API de Hunter.io |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `person` | object | Información de la persona \(indefinido para la herramienta companies_find\) |
| `company` | object | Información de la empresa incluyendo nombre, dominio, industria, tamaño, país, linkedin y twitter |
### `hunter_email_count`
Devuelve el número total de direcciones de correo electrónico encontradas para un dominio o empresa.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | No | Dominio para contar correos electrónicos \(obligatorio si no se proporciona la empresa\) |
| `company` | string | No | Nombre de la empresa para contar correos electrónicos \(obligatorio si no se proporciona el dominio\) |
| `type` | string | No | Filtro para correos personales o genéricos solamente |
| `apiKey` | string | Sí | Clave API de Hunter.io |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `total` | number | Número total de direcciones de correo electrónico encontradas |
| `personal_emails` | number | Número de direcciones de correo electrónico personales encontradas |
| `generic_emails` | number | Número de direcciones de correo electrónico genéricas encontradas |
| `department` | object | Desglose de direcciones de correo electrónico por departamento \(ejecutivo, ti, finanzas, gestión, ventas, legal, soporte, rrhh, marketing, comunicación\) |
| `seniority` | object | Desglose de direcciones de correo electrónico por nivel de antigüedad \(junior, senior, ejecutivo\) |
## Notas
- Categoría: `tools`
- Tipo: `hunter`

View File

@@ -1,79 +0,0 @@
---
title: Generador de imágenes
description: Generar imágenes
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="image_generator"
color="#4D5FFF"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 0 26 26'
fill='none'
xmlns='http://www.w3.org/2000/svg'
stroke='currentColor'
strokeWidth='2'
strokeLinecap='round'
strokeLinejoin='round'
>
<path d='M24.903 10.32C16.0897 9.10933 8.48966 15.6533 9.00033 24.3333M5.66699 7.66667C5.66699 8.37391 5.94794 9.05219 6.44804 9.55228C6.94814 10.0524 7.62641 10.3333 8.33366 10.3333C9.0409 10.3333 9.71918 10.0524 10.2193 9.55228C10.7194 9.05219 11.0003 8.37391 11.0003 7.66667C11.0003 6.95942 10.7194 6.28115 10.2193 5.78105C9.71918 5.28095 9.0409 5 8.33366 5C7.62641 5 6.94814 5.28095 6.44804 5.78105C5.94794 6.28115 5.66699 6.95942 5.66699 7.66667Z' />
<path d='M1 14.4213C4.70667 13.908 8.03333 15.6986 9.832 18.5546' />
<path d='M1 9.53333C1 6.54667 1 5.05333 1.58133 3.912C2.09265 2.90851 2.90851 2.09265 3.912 1.58133C5.05333 1 6.54667 1 9.53333 1H16.4667C19.4533 1 20.9467 1 22.088 1.58133C23.0915 2.09265 23.9073 2.90851 24.4187 3.912C25 5.05333 25 6.54667 25 9.53333V16.4667C25 19.4533 25 20.9467 24.4187 22.088C23.9073 23.0915 23.0915 23.9073 22.088 24.4187C20.9467 25 19.4533 25 16.4667 25H9.53333C6.54667 25 5.05333 25 3.912 24.4187C2.90851 23.9073 2.09265 23.0915 1.58133 22.088C1 20.9467 1 19.4533 1 16.4667V9.53333Z' />
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[DALL-E](https://openai.com/dall-e-3) es el sistema avanzado de IA de OpenAI diseñado para generar imágenes y arte realistas a partir de descripciones en lenguaje natural. Como modelo de generación de imágenes de última generación, DALL-E puede crear visuales detallados y creativos basados en indicaciones textuales, permitiendo a los usuarios transformar sus ideas en contenido visual sin necesidad de habilidades artísticas.
Con DALL-E, puedes:
- **Generar imágenes realistas**: Crear visuales fotorrealistas a partir de descripciones textuales
- **Diseñar arte conceptual**: Transformar ideas abstractas en representaciones visuales
- **Producir variaciones**: Generar múltiples interpretaciones de la misma indicación
- **Controlar el estilo artístico**: Especificar estilos artísticos, medios y estéticas visuales
- **Crear escenas detalladas**: Describir escenas complejas con múltiples elementos y relaciones
- **Visualizar productos**: Generar maquetas de productos y conceptos de diseño
- **Ilustrar ideas**: Convertir conceptos escritos en ilustraciones visuales
En Sim, la integración con DALL-E permite a tus agentes generar imágenes de forma programática como parte de sus flujos de trabajo. Esto permite potentes escenarios de automatización como creación de contenido, diseño visual e ideación creativa. Tus agentes pueden formular instrucciones detalladas, generar imágenes correspondientes e incorporar estos elementos visuales en sus resultados o procesos posteriores. Esta integración cierra la brecha entre el procesamiento del lenguaje natural y la creación de contenido visual, permitiendo que tus agentes se comuniquen no solo a través de texto sino también mediante imágenes convincentes. Al conectar Sim con DALL-E, puedes crear agentes que produzcan contenido visual bajo demanda, ilustren conceptos, generen recursos de diseño y mejoren las experiencias de usuario con elementos visuales enriquecidos - todo sin requerir intervención humana en el proceso creativo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Crea imágenes de alta calidad utilizando los modelos de generación de imágenes de OpenAI. Configura resolución, calidad, estilo y otros parámetros para obtener exactamente la imagen que necesitas.
## Herramientas
### `openai_image`
Generar imágenes usando OpenAI
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `model` | string | Sí | El modelo a utilizar \(gpt-image-1 o dall-e-3\) |
| `prompt` | string | Sí | Una descripción textual de la imagen deseada |
| `size` | string | Sí | El tamaño de las imágenes generadas \(1024x1024, 1024x1792, o 1792x1024\) |
| `quality` | string | No | La calidad de la imagen \(standard o hd\) |
| `style` | string | No | El estilo de la imagen \(vivid o natural\) |
| `background` | string | No | El color de fondo, solo para gpt-image-1 |
| `n` | number | No | El número de imágenes a generar \(1-10\) |
| `apiKey` | string | Sí | Tu clave API de OpenAI |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Datos de la imagen generada |
## Notas
- Categoría: `tools`
- Tipo: `image_generator`

View File

@@ -1,71 +0,0 @@
---
title: Herramientas
description: Herramientas potentes para mejorar tus flujos de trabajo agénticos
---
import { Card, Cards } from "fumadocs-ui/components/card";
import { Step, Steps } from "fumadocs-ui/components/steps";
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
Las herramientas son componentes potentes en Sim que permiten a tus flujos de trabajo interactuar con servicios externos, procesar datos y realizar tareas especializadas. Amplían las capacidades de tus agentes y flujos de trabajo proporcionando acceso a varias APIs y servicios.
## ¿Qué es una herramienta?
Una herramienta es un componente especializado que proporciona una funcionalidad específica o integración con servicios externos. Las herramientas pueden usarse para buscar en la web, interactuar con bases de datos, procesar imágenes, generar texto o imágenes, comunicarse a través de plataformas de mensajería y mucho más.
## Uso de herramientas en flujos de trabajo
Hay dos formas principales de usar herramientas en tus flujos de trabajo de Sim:
<Steps>
<Step>
<strong>Como bloques independientes</strong>: Las herramientas pueden añadirse como bloques individuales en el lienzo cuando necesitas acceso determinista y directo a su funcionalidad. Esto te da un control preciso sobre cuándo y cómo se llama a la herramienta.
</Step>
<Step>
<strong>Como herramientas de agente</strong>: Las herramientas pueden añadirse a los bloques de Agente haciendo clic en "Añadir herramientas" y configurando los parámetros requeridos. Esto permite a los agentes elegir dinámicamente qué herramientas usar según el contexto y los requisitos de la tarea.
</Step>
</Steps>
## Configuración de herramientas
Cada herramienta requiere una configuración específica para funcionar correctamente. Los elementos comunes de configuración incluyen:
- **Claves API**: Muchas herramientas requieren autenticación mediante claves API
- **Parámetros de conexión**: Endpoints, identificadores de base de datos, etc.
- **Formato de entrada**: Cómo deben estructurarse los datos para la herramienta
- **Manejo de salida**: Cómo procesar los resultados de la herramienta
## Herramientas disponibles
Sim proporciona una colección diversa de herramientas para varios propósitos, incluyendo:
- **IA y procesamiento de lenguaje**: OpenAI, ElevenLabs, servicios de traducción
- **Búsqueda e investigación**: Google Search, Tavily, Exa, Perplexity
- **Manipulación de documentos**: Google Docs, Google Sheets, Notion, Confluence
- **Procesamiento de medios**: Vision, Image Generator
- **Comunicación**: Slack, WhatsApp, Twilio SMS, Gmail
- **Almacenamiento de datos**: Pinecone, Supabase, Airtable
- **Desarrollo**: GitHub
Cada herramienta tiene su propia página de documentación dedicada con instrucciones detalladas sobre configuración y uso.
## Resultados de las herramientas
Las herramientas normalmente devuelven datos estructurados que pueden ser procesados por bloques subsiguientes en tu flujo de trabajo. El formato de estos datos varía dependiendo de la herramienta y operación, pero generalmente incluye:
- El contenido principal o resultado
- Metadatos sobre la operación
- Información de estado
Consulta la documentación específica de cada herramienta para entender su formato exacto de salida.
## Configuración YAML
Para una configuración detallada del flujo de trabajo en YAML y su sintaxis, consulta la documentación de [Referencia de flujos de trabajo YAML](/yaml). Esto incluye guías completas para:
- **Sintaxis de referencia de bloques**: Cómo conectar y referenciar datos entre bloques
- **Configuración de herramientas**: Uso de herramientas tanto en bloques independientes como en configuraciones de agentes
- **Variables de entorno**: Manejo seguro de claves API y credenciales
- **Ejemplos completos**: Patrones y configuraciones de flujos de trabajo del mundo real
Para parámetros específicos de herramientas y opciones de configuración, consulta la página de documentación individual de cada herramienta.

View File

@@ -1,92 +0,0 @@
---
title: Jina
description: Convertir contenido de sitios web en texto
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jina"
color="#333333"
icon={true}
iconSvg={`<svg className="block-icon"
viewBox='0 0 30 14'
fill='none'
xmlns='http://www.w3.org/2000/svg'
>
<path
d='M17.1516 5.25628C17.1724 5.25598 17.1932 5.25598 17.2146 5.25569C17.2831 5.2551 17.3514 5.2554 17.4197 5.25598C17.468 5.25569 17.5161 5.25569 17.5644 5.2554C17.6655 5.2554 17.7665 5.25569 17.8679 5.25628C17.9956 5.25686 18.1237 5.25657 18.2514 5.25569C19.3043 5.251 20.25 5.39426 21.0642 6.12112C21.0958 6.14632 21.1275 6.17122 21.1594 6.19612C21.8277 6.7885 22.2088 7.68733 22.2704 8.56624C22.278 8.73762 22.2777 8.90901 22.2768 9.08069C22.2771 9.1346 22.2771 9.1885 22.2771 9.24241C22.2774 9.35432 22.2771 9.46594 22.2768 9.57786C22.2762 9.72083 22.2765 9.8638 22.2771 10.0068C22.2774 10.1178 22.2774 10.2285 22.2771 10.3393C22.2771 10.3923 22.2771 10.445 22.2774 10.4978C22.2774 10.571 22.2771 10.6446 22.2765 10.7181C22.2768 10.7395 22.2771 10.7612 22.2771 10.7831C22.2753 10.9405 22.2408 11.0615 22.1335 11.1789C21.9882 11.292 21.8977 11.3102 21.7163 11.3108C21.6862 11.3108 21.6862 11.3108 21.6551 11.3111C21.5874 11.3114 21.5198 11.3114 21.4521 11.3114C21.4035 11.3114 21.3551 11.3116 21.3065 11.3116C21.1746 11.3122 21.0428 11.3122 20.9107 11.3125C20.8284 11.3125 20.746 11.3125 20.6637 11.3128C20.4059 11.3131 20.1481 11.3134 19.8903 11.3137C19.5926 11.3137 19.2953 11.3143 18.9976 11.3152C18.7676 11.3157 18.5376 11.316 18.3077 11.316C18.1703 11.316 18.0329 11.3163 17.8954 11.3169C17.7663 11.3172 17.6368 11.3172 17.5076 11.3172C17.4601 11.3169 17.4129 11.3172 17.3655 11.3175C17.3007 11.3178 17.2357 11.3178 17.1709 11.3175C17.1349 11.3175 17.0986 11.3175 17.0614 11.3175C16.933 11.3034 16.8343 11.2621 16.7385 11.1748C16.6243 11.0278 16.6067 10.9246 16.6067 10.7436C16.6064 10.7111 16.6064 10.7111 16.6064 10.678C16.6061 10.605 16.6058 10.5321 16.6058 10.4594C16.6055 10.4073 16.6055 10.3551 16.6052 10.303C16.6046 10.1313 16.6043 9.95989 16.604 9.78821C16.6037 9.72932 16.6037 9.67014 16.6037 9.61126C16.6032 9.33382 16.6026 9.05637 16.6023 8.77893C16.602 8.45872 16.6014 8.1385 16.6002 7.81858C16.5994 7.57102 16.5988 7.32346 16.5988 7.07591C16.5988 6.92825 16.5985 6.7803 16.5976 6.63264C16.597 6.49348 16.597 6.35432 16.5973 6.21516C16.5973 6.16419 16.597 6.11321 16.5967 6.06223C16.5929 5.56565 16.5929 5.56565 16.7283 5.3887C16.8583 5.27737 16.9811 5.25657 17.1516 5.25628Z'
fill='currentColor'
/>
<path
d='M28.4893 5.83187C28.5341 5.86966 28.5786 5.90745 28.6229 5.94554C28.6407 5.95931 28.6586 5.97337 28.6771 5.98773C29.2217 6.42161 29.5281 7.12093 29.6483 7.79124C29.6509 7.83665 29.6524 7.88206 29.6527 7.92777C29.6529 7.96761 29.6529 7.96761 29.6532 8.00804C29.6532 8.03704 29.6535 8.06575 29.6535 8.09534C29.6538 8.12611 29.6538 8.15657 29.6541 8.18821C29.6547 8.28929 29.655 8.39036 29.6553 8.49144C29.6553 8.52601 29.6556 8.56058 29.6556 8.59603C29.6562 8.77884 29.6568 8.96165 29.6571 9.14446C29.6573 9.33314 29.6582 9.52181 29.6594 9.71077C29.6603 9.85579 29.6606 10.0011 29.6606 10.1461C29.6609 10.2159 29.6612 10.2856 29.6617 10.355C29.6623 10.4523 29.6623 10.5498 29.662 10.6471C29.6626 10.6902 29.6626 10.6902 29.6632 10.7341C29.662 10.9002 29.6474 11.0025 29.5311 11.1311C29.3805 11.2661 29.2481 11.265 29.0556 11.2632C29.0257 11.2635 28.9958 11.2638 28.9654 11.2638C28.8669 11.2644 28.7685 11.2641 28.67 11.2638C28.6012 11.2638 28.5323 11.2638 28.4635 11.2641C28.3191 11.2641 28.1746 11.2641 28.0302 11.2635C27.8462 11.2626 27.6625 11.2632 27.4785 11.2638C27.3362 11.2644 27.1938 11.2641 27.0517 11.2638C26.9837 11.2638 26.916 11.2638 26.8484 11.2641C25.9759 11.2667 25.1834 11.0508 24.5488 10.4268C24.5201 10.3981 24.4914 10.3691 24.4627 10.3401C24.4384 10.3155 24.4138 10.2909 24.3889 10.2657C23.8404 9.68851 23.5985 8.90687 23.6087 8.12435C23.6301 7.32191 23.9899 6.59681 24.5506 6.03343C25.6158 5.02562 27.3318 4.91839 28.4893 5.83187Z'
fill='currentColor'
/>
<path
d='M8.6422 5.41793C8.7591 5.5858 8.7424 5.76246 8.74093 5.95904C8.74122 5.99566 8.74123 6.03228 8.74123 6.07037C8.74152 6.17086 8.74122 6.27164 8.74093 6.37213C8.74064 6.47818 8.74064 6.58424 8.74064 6.69C8.74093 6.86842 8.74035 7.04713 8.74005 7.22554C8.73947 7.43004 8.73917 7.63482 8.73947 7.83961C8.73947 8.03765 8.73947 8.23599 8.73917 8.43404C8.73888 8.51783 8.73888 8.60133 8.73888 8.68511C8.73947 9.82125 8.63869 10.9436 7.85119 11.8339C7.82951 11.8588 7.80753 11.8837 7.78527 11.9095C7.72023 11.9831 7.65402 12.0551 7.58751 12.1269C7.57199 12.1442 7.55675 12.1618 7.54064 12.1796C6.93712 12.8277 5.99757 13.1886 5.12746 13.2276C5.10197 13.2291 5.07619 13.2302 5.04982 13.2314C4.98771 13.2346 4.92531 13.2373 4.8629 13.2402C4.86085 12.0302 4.86085 10.8203 4.86261 9.61031C4.86291 9.44918 4.8629 9.28804 4.8632 9.12691C4.86349 8.63941 4.86466 8.15191 4.86671 7.6647C4.86789 7.45552 4.86847 7.24634 4.86876 7.03717C4.86876 6.84058 4.86964 6.64371 4.87082 6.44713C4.8714 6.37506 4.8714 6.30299 4.8714 6.23092C4.87111 6.13248 4.87199 6.03404 4.87287 5.9356C4.87257 5.90718 4.87228 5.87877 4.87199 5.84947C4.87521 5.66051 4.91417 5.53306 5.03869 5.38863C5.1673 5.27232 5.31642 5.28756 5.48107 5.28756C5.51066 5.28726 5.54025 5.28697 5.57101 5.28668C5.66886 5.28551 5.76701 5.28521 5.86515 5.28463C5.93341 5.28404 6.00167 5.28345 6.06994 5.28287C6.2132 5.2817 6.35617 5.28082 6.49914 5.27994C6.68253 5.27906 6.86564 5.27759 7.04874 5.27584C7.18996 5.27467 7.33087 5.27349 7.47179 5.27261C7.53947 5.27203 7.60685 5.27174 7.67453 5.27115C7.76886 5.27027 7.86349 5.26998 7.95812 5.26939C7.98566 5.2691 8.01349 5.26881 8.0422 5.26881C8.4632 5.26734 8.4632 5.26734 8.6422 5.41793Z'
fill='currentColor'
/>
<path
d='M11.2636 5.26714C11.2897 5.26685 11.3155 5.26685 11.3421 5.26655C11.3705 5.26655 11.3987 5.26626 11.428 5.26626C11.4578 5.26597 11.4877 5.26597 11.5185 5.26567C11.6175 5.26509 11.7165 5.26479 11.8158 5.2645C11.8665 5.26421 11.8665 5.26421 11.9184 5.26421C12.0974 5.26362 12.2767 5.26304 12.456 5.26274C12.6408 5.26245 12.8257 5.26157 13.0109 5.2604C13.1532 5.25952 13.2953 5.25923 13.4377 5.25923C13.506 5.25894 13.5742 5.25864 13.6422 5.25806C13.7377 5.25747 13.8332 5.25747 13.9287 5.25776C13.9569 5.25718 13.985 5.25688 14.0137 5.25659C14.1895 5.25776 14.3278 5.28501 14.4731 5.38872C14.6096 5.55659 14.6231 5.68052 14.6234 5.89233C14.6234 5.91343 14.6237 5.93481 14.6237 5.95679C14.6239 6.02798 14.6237 6.09917 14.6237 6.17036C14.6239 6.22134 14.6239 6.27261 14.6239 6.32358C14.6242 6.46216 14.6245 6.60103 14.6245 6.73989C14.6245 6.85562 14.6245 6.97134 14.6245 7.08735C14.6248 7.36069 14.6248 7.63403 14.6248 7.90708C14.6248 8.18921 14.6251 8.47105 14.6257 8.75288C14.626 8.99487 14.6263 9.23687 14.6263 9.47886C14.6263 9.62358 14.6263 9.76802 14.6266 9.91245C14.6269 10.0487 14.6269 10.1846 14.6266 10.3206C14.6266 10.3704 14.6266 10.4202 14.6269 10.47C14.6272 10.5382 14.6269 10.6065 14.6269 10.6745C14.6269 10.7128 14.6269 10.7509 14.6269 10.7902C14.616 10.9469 14.5935 11.0638 14.4895 11.1839C14.2952 11.3498 14.1092 11.3404 13.8655 11.3401C13.8233 11.3404 13.8233 11.3404 13.7802 11.3404C13.687 11.3407 13.5939 11.3407 13.501 11.341C13.436 11.341 13.3712 11.341 13.3065 11.3413C13.1705 11.3413 13.0346 11.3413 12.8987 11.3413C12.7249 11.3413 12.5509 11.3418 12.3772 11.3421C12.2433 11.3424 12.1091 11.3427 11.9752 11.3427C11.9114 11.3427 11.8472 11.3427 11.783 11.343C11.6934 11.3433 11.6034 11.3433 11.5138 11.343C11.4745 11.3433 11.4745 11.3433 11.4341 11.3436C11.2425 11.3424 11.0609 11.3348 10.9044 11.2132C10.7761 11.0486 10.7412 10.9103 10.7412 10.7035C10.7409 10.6821 10.7409 10.6607 10.7406 10.6387C10.7404 10.5672 10.7406 10.496 10.7409 10.4249C10.7409 10.3736 10.7406 10.322 10.7404 10.2708C10.7401 10.1319 10.7404 9.99272 10.7406 9.85386C10.7406 9.70796 10.7406 9.56235 10.7404 9.41675C10.7404 9.17183 10.7404 8.9272 10.7409 8.68257C10.7412 8.40015 10.7412 8.11743 10.7406 7.83472C10.7404 7.59185 10.7404 7.34897 10.7404 7.1061C10.7406 6.96108 10.7406 6.81636 10.7404 6.67134C10.7401 6.53511 10.7404 6.39858 10.7406 6.26235C10.7409 6.21255 10.7409 6.16245 10.7406 6.11265C10.7404 6.04409 10.7406 5.97583 10.7412 5.90757C10.7412 5.86919 10.7412 5.8311 10.7412 5.79185C10.7582 5.62397 10.7963 5.47515 10.9264 5.36118C11.0421 5.28325 11.1262 5.26802 11.2636 5.26714Z'
fill='currentColor'
/>
<path
d='M3.58833 9.8857C3.97827 10.2715 4.18628 10.7596 4.20093 11.3066C4.18452 11.8662 3.96245 12.3628 3.56226 12.7527C3.194 13.0776 2.70064 13.2692 2.20523 13.2466C2.18326 13.2446 2.16158 13.2425 2.13902 13.2402C2.11031 13.2376 2.08159 13.2349 2.05201 13.232C1.51617 13.1658 1.08199 12.9168 0.732767 12.5078C0.370071 12.0132 0.294193 11.4762 0.364505 10.8783C0.476126 10.3738 0.798392 9.944 1.23081 9.66598C1.99693 9.22125 2.9148 9.30006 3.58833 9.8857Z'
fill='currentColor'
/>
<path
d='M12.6714 0.74873C12.6995 0.748437 12.7273 0.748145 12.756 0.747559C13.2318 0.749609 13.693 0.952637 14.0349 1.28105C14.3838 1.6335 14.5947 2.0791 14.6 2.57627C14.5965 3.14111 14.4632 3.62246 14.063 4.04111C13.6912 4.40293 13.2008 4.59365 12.686 4.60859C12.1434 4.59453 11.6864 4.40234 11.2941 4.02969C10.9086 3.62305 10.7357 3.13232 10.7466 2.57598C10.7659 2.08145 10.9883 1.60625 11.3384 1.25791C11.7245 0.919824 12.1578 0.742578 12.6714 0.74873Z'
fill='currentColor'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Jina AI](https://jina.ai/) es una potente herramienta de extracción de contenido que se integra perfectamente con Sim para transformar el contenido web en texto limpio y legible. Esta integración permite a los desarrolladores incorporar fácilmente capacidades de procesamiento de contenido web en sus flujos de trabajo basados en agentes.
Jina AI Reader se especializa en extraer el contenido más relevante de las páginas web, eliminando el desorden, la publicidad y los problemas de formato para producir texto limpio y estructurado que está optimizado para modelos de lenguaje y otras tareas de procesamiento de texto.
Con la integración de Jina AI en Sim, puedes:
- **Extraer contenido limpio** de cualquier página web simplemente proporcionando una URL
- **Procesar diseños web complejos** en texto estructurado y legible
- **Mantener el contexto importante** mientras eliminas elementos innecesarios
- **Preparar contenido web** para su posterior procesamiento en tus flujos de trabajo con agentes
- **Agilizar tareas de investigación** convirtiendo rápidamente la información web en datos utilizables
Esta integración es particularmente valiosa para crear agentes que necesitan recopilar y procesar información de la web, realizar investigaciones o analizar contenido en línea como parte de su flujo de trabajo.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Transforma el contenido web en texto limpio y legible utilizando las capacidades avanzadas de extracción de Jina AI. Extrae contenido significativo de sitios web mientras preservas información importante y opcionalmente recopilas enlaces.
## Herramientas
### `jina_read_url`
Extrae y procesa contenido web en texto limpio y compatible con LLM usando Jina AI Reader. Admite análisis avanzado de contenido, recopilación de enlaces y múltiples formatos de salida con opciones de procesamiento configurables.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `url` | string | Sí | La URL para leer y convertir a markdown |
| `useReaderLMv2` | boolean | No | Si se debe usar ReaderLM-v2 para mejor calidad |
| `gatherLinks` | boolean | No | Si se deben recopilar todos los enlaces al final |
| `jsonResponse` | boolean | No | Si se debe devolver la respuesta en formato JSON |
| `apiKey` | string | Sí | Tu clave API de Jina AI |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `content` | string | El contenido extraído de la URL, procesado en texto limpio y compatible con LLM |
## Notas
- Categoría: `tools`
- Tipo: `jina`

View File

@@ -1,140 +0,0 @@
---
title: Jira
description: Interactúa con Jira
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="jira"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 30 30'
focusable='false'
aria-hidden='true'
>
<path
fill='#1868DB'
d='M11.034 21.99h-2.22c-3.346 0-5.747-2.05-5.747-5.052h11.932c.619 0 1.019.44 1.019 1.062v12.007c-2.983 0-4.984-2.416-4.984-5.784zm5.893-5.967h-2.219c-3.347 0-5.748-2.013-5.748-5.015h11.933c.618 0 1.055.402 1.055 1.025V24.04c-2.983 0-5.02-2.416-5.02-5.784zm5.93-5.93h-2.219c-3.347 0-5.748-2.05-5.748-5.052h11.933c.618 0 1.018.439 1.018 1.025v12.007c-2.983 0-4.984-2.416-4.984-5.784z'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Jira](https://www.atlassian.com/jira) es una plataforma líder de gestión de proyectos y seguimiento de incidencias que ayuda a los equipos a planificar, rastrear y gestionar proyectos de desarrollo de software ágil de manera efectiva. Como parte de la suite de Atlassian, Jira se ha convertido en el estándar de la industria para equipos de desarrollo de software y profesionales de gestión de proyectos en todo el mundo.
Jira proporciona un conjunto completo de herramientas para gestionar proyectos complejos a través de su sistema de flujo de trabajo flexible y personalizable. Con su robusta API y capacidades de integración, Jira permite a los equipos optimizar sus procesos de desarrollo y mantener una clara visibilidad del progreso del proyecto.
Las características principales de Jira incluyen:
- Gestión de proyectos ágiles: Soporte para metodologías Scrum y Kanban con tableros y flujos de trabajo personalizables
- Seguimiento de incidencias: Sistema sofisticado de seguimiento para errores, historias, épicas y tareas con informes detallados
- Automatización de flujos de trabajo: Potentes reglas de automatización para optimizar tareas y procesos repetitivos
- Búsqueda avanzada: JQL (Jira Query Language) para filtrado e informes complejos de incidencias
En Sim, la integración con Jira permite a tus agentes interactuar sin problemas con tu flujo de trabajo de gestión de proyectos. Esto crea oportunidades para la creación, actualización y seguimiento automatizado de incidencias como parte de tus flujos de trabajo de IA. La integración permite a los agentes crear, recuperar y actualizar incidencias de Jira de forma programática, facilitando tareas automatizadas de gestión de proyectos y asegurando que la información importante sea debidamente rastreada y documentada. Al conectar Sim con Jira, puedes construir agentes inteligentes que mantengan la visibilidad del proyecto mientras automatizan tareas rutinarias de gestión de proyectos, mejorando la productividad del equipo y asegurando un seguimiento consistente del proyecto.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Conéctate a espacios de trabajo de Jira para leer, escribir y actualizar incidencias. Accede a contenido, metadatos e integra la documentación de Jira en tus flujos de trabajo.
## Herramientas
### `jira_retrieve`
Recupera información detallada sobre una incidencia específica de Jira
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `projectId` | string | No | ID del proyecto de Jira \(opcional; no es necesario para recuperar una sola incidencia\). |
| `issueKey` | string | Sí | Clave de la incidencia de Jira a recuperar \(p. ej., PROJ-123\) |
| `cloudId` | string | No | ID de Jira Cloud para la instancia. Si no se proporciona, se obtendrá usando el dominio. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la incidencia de Jira con clave de incidencia, resumen, descripción, marcas de tiempo de creación y actualización |
### `jira_update`
Actualizar una incidencia de Jira
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `projectId` | string | No | ID del proyecto de Jira para actualizar incidencias. Si no se proporciona, se recuperarán todas las incidencias. |
| `issueKey` | string | Sí | Clave de la incidencia de Jira a actualizar |
| `summary` | string | No | Nuevo resumen para la incidencia |
| `description` | string | No | Nueva descripción para la incidencia |
| `status` | string | No | Nuevo estado para la incidencia |
| `priority` | string | No | Nueva prioridad para la incidencia |
| `assignee` | string | No | Nuevo asignado para la incidencia |
| `cloudId` | string | No | ID de Jira Cloud para la instancia. Si no se proporciona, se obtendrá usando el dominio. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles actualizados de la incidencia de Jira con marca de tiempo, clave de incidencia, resumen y estado de éxito |
### `jira_write`
Escribir una incidencia de Jira
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `projectId` | string | Sí | ID del proyecto para la incidencia |
| `summary` | string | Sí | Resumen de la incidencia |
| `description` | string | No | Descripción de la incidencia |
| `priority` | string | No | Prioridad de la incidencia |
| `assignee` | string | No | Asignado para la incidencia |
| `cloudId` | string | No | ID de Jira Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. |
| `issueType` | string | Sí | Tipo de incidencia a crear \(p. ej., Tarea, Historia\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | object | Detalles de la incidencia de Jira creada con marca de tiempo, clave de incidencia, resumen, estado de éxito y URL |
### `jira_bulk_read`
Recuperar múltiples incidencias de Jira en bloque
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `domain` | string | Sí | Tu dominio de Jira \(p. ej., tuempresa.atlassian.net\) |
| `projectId` | string | Sí | ID del proyecto de Jira |
| `cloudId` | string | No | ID de Jira cloud |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Estado de éxito de la operación |
| `output` | array | Array de incidencias de Jira con resumen, descripción, marcas de tiempo de creación y actualización |
## Notas
- Categoría: `tools`
- Tipo: `jira`

View File

@@ -1,121 +0,0 @@
---
title: Conocimiento
description: Usa búsqueda vectorial
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="knowledge"
color="#00B0B0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.5'
strokeLinecap='round'
strokeLinejoin='round'
>
<path d='M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14' />
<path d='m7.5 4.27 9 5.15' />
<polyline points='3.29 7 12 12 20.71 7' />
<line x1='12' x2='12' y1='22' y2='12' />
<circle cx='18.5' cy='15.5' r='2.5' />
<path d='M20.27 17.27 22 19' />
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
La base de conocimiento de Sim es una potente función nativa que te permite crear, gestionar y consultar bases de conocimiento personalizadas directamente dentro de la plataforma. Utilizando embeddings de IA avanzados y tecnología de búsqueda vectorial, el bloque de base de conocimiento te permite integrar capacidades de búsqueda inteligente en tus flujos de trabajo, facilitando encontrar y utilizar información relevante en toda tu organización.
El sistema de base de conocimiento proporciona una solución integral para gestionar el conocimiento organizacional a través de su arquitectura flexible y escalable. Con sus capacidades de búsqueda vectorial integradas, los equipos pueden realizar búsquedas semánticas que comprenden el significado y el contexto, yendo más allá de la tradicional coincidencia de palabras clave.
Las características principales de la base de conocimiento incluyen:
- Búsqueda semántica: búsqueda avanzada impulsada por IA que comprende el significado y contexto, no solo palabras clave
- Embeddings vectoriales: conversión automática de texto en vectores multidimensionales para una coincidencia inteligente de similitud
- Bases de conocimiento personalizadas: crea y gestiona múltiples bases de conocimiento para diferentes propósitos o departamentos
- Tipos de contenido flexibles: soporte para varios formatos de documentos y tipos de contenido
- Actualizaciones en tiempo real: indexación inmediata de nuevo contenido para búsqueda instantánea
En Sim, el bloque de Base de Conocimiento permite a tus agentes realizar búsquedas semánticas inteligentes en tus bases de conocimiento personalizadas. Esto crea oportunidades para la recuperación automatizada de información, recomendaciones de contenido y descubrimiento de conocimiento como parte de tus flujos de trabajo de IA. La integración permite a los agentes buscar y recuperar información relevante de forma programática, facilitando tareas automatizadas de gestión del conocimiento y asegurando que la información importante sea fácilmente accesible. Al aprovechar el bloque de Base de Conocimiento, puedes crear agentes inteligentes que mejoren el descubrimiento de información mientras automatizan tareas rutinarias de gestión del conocimiento, mejorando la eficiencia del equipo y asegurando un acceso consistente al conocimiento organizacional.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Realiza búsquedas vectoriales semánticas en bases de conocimiento, sube fragmentos individuales a documentos existentes o crea nuevos documentos a partir de contenido de texto. Utiliza embeddings avanzados de IA para entender el significado y contexto en las operaciones de búsqueda.
## Herramientas
### `knowledge_search`
Busca contenido similar en una base de conocimiento utilizando similitud vectorial
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `knowledgeBaseId` | string | Sí | ID de la base de conocimiento en la que buscar |
| `query` | string | No | Texto de consulta de búsqueda \(opcional cuando se usan filtros de etiquetas\) |
| `topK` | number | No | Número de resultados más similares a devolver \(1-100\) |
| `tagFilters` | any | No | Array de filtros de etiquetas con propiedades tagName y tagValue |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `results` | array | Array de resultados de búsqueda de la base de conocimiento |
### `knowledge_upload_chunk`
Subir un nuevo fragmento a un documento en una base de conocimiento
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `knowledgeBaseId` | string | Sí | ID de la base de conocimiento que contiene el documento |
| `documentId` | string | Sí | ID del documento al que se subirá el fragmento |
| `content` | string | Sí | Contenido del fragmento a subir |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `data` | object | Información sobre el fragmento subido |
### `knowledge_create_document`
Crear un nuevo documento en una base de conocimiento
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `knowledgeBaseId` | string | Sí | ID de la base de conocimiento que contiene el documento |
| `name` | string | Sí | Nombre del documento |
| `content` | string | Sí | Contenido del documento |
| `tag1` | string | No | Valor de etiqueta 1 para el documento |
| `tag2` | string | No | Valor de etiqueta 2 para el documento |
| `tag3` | string | No | Valor de etiqueta 3 para el documento |
| `tag4` | string | No | Valor de etiqueta 4 para el documento |
| `tag5` | string | No | Valor de etiqueta 5 para el documento |
| `tag6` | string | No | Valor de etiqueta 6 para el documento |
| `tag7` | string | No | Valor de etiqueta 7 para el documento |
| `documentTagsData` | array | No | Datos de etiquetas estructurados con nombres, tipos y valores |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `data` | object | Información sobre el documento creado |
## Notas
- Categoría: `blocks`
- Tipo: `knowledge`

View File

@@ -1,87 +0,0 @@
---
title: Linear
description: Lee y crea incidencias en Linear
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="linear"
color="#5E6AD2"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
fill='currentColor'
viewBox='0 0 100 100'
>
<path
fill='currentColor'
d='M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3542-.0443L12.6587 18.074Z'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Linear](https://linear.app) es una plataforma líder de gestión de proyectos y seguimiento de incidencias que ayuda a los equipos a planificar, rastrear y gestionar su trabajo de manera efectiva. Como herramienta moderna de gestión de proyectos, Linear se ha vuelto cada vez más popular entre los equipos de desarrollo de software y profesionales de gestión de proyectos por su interfaz simplificada y potentes funcionalidades.
Linear proporciona un conjunto completo de herramientas para gestionar proyectos complejos a través de su sistema de flujo de trabajo flexible y personalizable. Con sus sólidas capacidades de API e integración, Linear permite a los equipos optimizar sus procesos de desarrollo y mantener una clara visibilidad del progreso del proyecto.
Las características principales de Linear incluyen:
- Gestión ágil de proyectos: Soporte para metodologías Scrum y Kanban con tableros y flujos de trabajo personalizables
- Seguimiento de incidencias: Sistema sofisticado de seguimiento para bugs, historias, épicas y tareas con informes detallados
- Automatización de flujos de trabajo: Potentes reglas de automatización para optimizar tareas y procesos repetitivos
- Búsqueda avanzada: Capacidades complejas de filtrado e informes para una gestión eficiente de incidencias
En Sim, la integración con Linear permite a tus agentes interactuar sin problemas con tu flujo de trabajo de gestión de proyectos. Esto crea oportunidades para la creación automatizada de incidencias, actualizaciones y seguimiento como parte de tus flujos de trabajo de IA. La integración permite a los agentes leer incidencias existentes y crear nuevas de forma programática, facilitando tareas automatizadas de gestión de proyectos y asegurando que la información importante sea debidamente rastreada y documentada. Al conectar Sim con Linear, puedes construir agentes inteligentes que mantengan la visibilidad del proyecto mientras automatizan tareas rutinarias de gestión, mejorando la productividad del equipo y asegurando un seguimiento consistente del proyecto.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra con Linear para obtener, filtrar y crear incidencias directamente desde tu flujo de trabajo.
## Herramientas
### `linear_read_issues`
Obtener y filtrar incidencias de Linear
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `teamId` | string | Sí | ID del equipo de Linear |
| `projectId` | string | Sí | ID del proyecto de Linear |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `issues` | array | Array de incidencias del equipo y proyecto de Linear especificados, cada una contiene id, título, descripción, estado, teamId y projectId |
### `linear_create_issue`
Crear una nueva incidencia en Linear
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `teamId` | string | Sí | ID del equipo de Linear |
| `projectId` | string | Sí | ID del proyecto de Linear |
| `title` | string | Sí | Título de la incidencia |
| `description` | string | No | Descripción de la incidencia |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `issue` | object | La incidencia creada que contiene id, título, descripción, estado, teamId y projectId |
## Notas
- Categoría: `tools`
- Tipo: `linear`

View File

@@ -1,72 +0,0 @@
---
title: Linkup
description: Busca en la web con Linkup
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="linkup"
color="#D6D3C7"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 24 24'
fill='none'
>
<path
d='M20.2 14.1c-.4-.3-1.6-.4-2.9-.2.5-1.4 1.3-3.9.1-5-.6-.5-1.5-.7-2.6-.5-.3 0-.6.1-1 .2-1.1-1.6-2.4-2.5-3.8-2.5-1.6 0-3.1 1-4.1 2.9-1.2 2.1-1.9 5.1-1.9 8.8v.03l.4.3c3-.9 7.5-2.3 10.7-2.9 0 .9.1 1.9.1 2.8v.03l.4.3c.1 0 5.4-1.7 5.3-3.3 0-.2-.1-.5-.3-.7zM19.9 14.7c.03.4-1.7 1.4-4 2.3.5-.7 1-1.6 1.3-2.5 1.4-.1 2.4-.1 2.7.2zM16.4 14.6c-.3.7-.7 1.4-1.2 2-.02-.6-.1-1.2-.2-1.8.4-.1.9-.1 1.4-.2zM16.5 9.4c.8.7.9 2.4.1 5.1-.5.1-1 .1-1.5.2-.3-2-.9-3.8-1.7-5.3.3-.1.6-.2.8-.2.9-.1 1.7.05 2.3.2zM9.5 6.8c1.2 0 2.3.7 3.2 2.1-2.8 1.1-5.9 3.4-8.4 7.8.2-5.1 1.9-9.9 5.2-9.9zM4.7 17c3.4-4.9 6.4-6.8 8.4-7.8.7 1.3 1.2 2.9 1.5 4.8-3.2.6-7.3 1.8-9.9 3z'
fill='currentColor'
stroke='currentColor'
strokeWidth='0.5'
strokeLinejoin='round'
/>
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Linkup](https://linkup.so) es una potente herramienta de búsqueda web que se integra perfectamente con Sim, permitiendo a tus agentes de IA acceder a información actualizada de la web con la atribución adecuada de las fuentes.
Linkup mejora tus agentes de IA proporcionándoles la capacidad de buscar en la web información actual. Cuando se integra en el conjunto de herramientas de tu agente:
- **Acceso a información en tiempo real**: Los agentes pueden recuperar la información más reciente de la web, manteniendo las respuestas actualizadas y relevantes.
- **Atribución de fuentes**: Toda la información viene con las citas adecuadas, garantizando transparencia y credibilidad.
- **Implementación sencilla**: Añade Linkup al conjunto de herramientas de tus agentes con una configuración mínima.
- **Conciencia contextual**: Los agentes pueden utilizar información de la web mientras mantienen su personalidad y estilo conversacional.
Para implementar Linkup en tu agente, simplemente añade la herramienta a la configuración de tu agente. Tu agente podrá entonces buscar en la web siempre que necesite responder preguntas que requieran información actual.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Linkup Search te permite buscar y recuperar información actualizada de la web con atribución de fuentes.
## Herramientas
### `linkup_search`
Busca información en la web usando Linkup
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `q` | string | Sí | La consulta de búsqueda |
| `depth` | string | Sí | Profundidad de búsqueda \(debe ser "standard" o "deep"\) |
| `outputType` | string | Sí | Tipo de salida a devolver \(debe ser "sourcedAnswer" o "searchResults"\) |
| `apiKey` | string | Sí | Introduce tu clave API de Linkup |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `answer` | string | La respuesta con fuentes a la consulta de búsqueda |
| `sources` | array | Array de fuentes utilizadas para compilar la respuesta, cada una contiene nombre, url y fragmento |
## Notas
- Categoría: `tools`
- Tipo: `linkup`

File diff suppressed because one or more lines are too long

View File

@@ -1,120 +0,0 @@
---
title: Memoria
description: Añadir almacén de memoria
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="memory"
color="#F64F9E"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='2'
strokeLinecap='round'
strokeLinejoin='round'
>
<path d='M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z' />
<path d='M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z' />
<path d='M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4' />
<path d='M17.599 6.5a3 3 0 0 0 .399-1.375' />
<path d='M6.003 5.125A3 3 0 0 0 6.401 6.5' />
<path d='M3.477 10.896a4 4 0 0 1 .585-.396' />
<path d='M19.938 10.5a4 4 0 0 1 .585.396' />
<path d='M6 18a4 4 0 0 1-1.967-.516' />
<path d='M19.967 17.484A4 4 0 0 1 18 18' />
</svg>`}
/>
## Instrucciones de uso
Crea almacenamiento persistente para datos que necesitan ser accedidos a través de múltiples pasos del flujo de trabajo. Almacena y recupera información a lo largo de la ejecución de tu flujo de trabajo para mantener el contexto y el estado.
## Herramientas
### `memory_add`
Añade una nueva memoria a la base de datos o agrega a una memoria existente con el mismo ID.
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `id` | string | Sí | Identificador para la memoria. Si ya existe una memoria con este ID, los nuevos datos se añadirán a ella. |
| `role` | string | Sí | Rol para la memoria del agente \(usuario, asistente o sistema\) |
| `content` | string | Sí | Contenido para la memoria del agente |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Indica si la memoria se añadió correctamente |
| `memories` | array | Array de objetos de memoria incluyendo la memoria nueva o actualizada |
| `error` | string | Mensaje de error si la operación falló |
### `memory_get`
Recuperar una memoria específica por su ID
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `id` | string | Sí | Identificador de la memoria a recuperar |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Indica si la memoria se recuperó correctamente |
| `memories` | array | Array de datos de memoria para el ID solicitado |
| `message` | string | Mensaje de éxito o error |
| `error` | string | Mensaje de error si la operación falló |
### `memory_get_all`
Recuperar todas las memorias de la base de datos
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Indica si todas las memorias se recuperaron correctamente |
| `memories` | array | Array de todos los objetos de memoria con claves, tipos y datos |
| `message` | string | Mensaje de éxito o error |
| `error` | string | Mensaje de error si la operación falló |
### `memory_delete`
Eliminar una memoria específica por su ID
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `id` | string | Sí | Identificador de la memoria a eliminar |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `success` | boolean | Si la memoria fue eliminada con éxito |
| `message` | string | Mensaje de éxito o error |
| `error` | string | Mensaje de error si la operación falló |
## Notas
- Categoría: `blocks`
- Tipo: `memory`

View File

@@ -1,164 +0,0 @@
---
title: Microsoft Excel
description: Leer, escribir y actualizar datos
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="microsoft_excel"
color="#E0E0E0"
icon={true}
iconSvg={`<svg className="block-icon"
xmlns='http://www.w3.org/2000/svg'
version='1.1'
id='Livello_1'
x='0px'
y='0px'
viewBox='0 0 2289.75 2130'
enableBackground='new 0 0 2289.75 2130'
>
<path
fill='#185C37'
d='M1437.75,1011.75L532.5,852v1180.393c0,53.907,43.7,97.607,97.607,97.607l0,0h1562.036 c53.907,0,97.607-43.7,97.607-97.607l0,0V1597.5L1437.75,1011.75z'
/>
<path
fill='#21A366'
d='M1437.75,0H630.107C576.2,0,532.5,43.7,532.5,97.607c0,0,0,0,0,0V532.5l905.25,532.5L1917,1224.75 L2289.75,1065V532.5L1437.75,0z'
/>
<path fill='#107C41' d='M532.5,532.5h905.25V1065H532.5V532.5z' />
<path
opacity='0.1'
enableBackground='new'
d='M1180.393,426H532.5v1331.25h647.893c53.834-0.175,97.432-43.773,97.607-97.607 V523.607C1277.825,469.773,1234.227,426.175,1180.393,426z'
/>
<path
opacity='0.2'
enableBackground='new'
d='M1127.143,479.25H532.5V1810.5h594.643 c53.834-0.175,97.432-43.773,97.607-97.607V576.857C1224.575,523.023,1180.977,479.425,1127.143,479.25z'
/>
<path
opacity='0.2'
enableBackground='new'
d='M1127.143,479.25H532.5V1704h594.643c53.834-0.175,97.432-43.773,97.607-97.607 V576.857C1224.575,523.023,1180.977,479.425,1127.143,479.25z'
/>
<path
opacity='0.2'
enableBackground='new'
d='M1073.893,479.25H532.5V1704h541.393c53.834-0.175,97.432-43.773,97.607-97.607 V576.857C1171.325,523.023,1127.727,479.425,1073.893,479.25z'
/>
<linearGradient
id='SVGID_1_'
gradientUnits='userSpaceOnUse'
x1='203.5132'
y1='1729.0183'
x2='967.9868'
y2='404.9817'
gradientTransform='matrix(1 0 0 -1 0 2132)'
>
<stop offset='0' style={{ stopColor: '#18884F' }} />
<stop offset='0.5' style={{ stopColor: '#117E43' }} />
<stop offset='1' style={{ stopColor: '#0B6631' }} />
</linearGradient>
<path
fill='url(#SVGID_1_)'
d='M97.607,479.25h976.285c53.907,0,97.607,43.7,97.607,97.607v976.285 c0,53.907-43.7,97.607-97.607,97.607H97.607C43.7,1650.75,0,1607.05,0,1553.143V576.857C0,522.95,43.7,479.25,97.607,479.25z'
/>
<path
fill='#FFFFFF'
d='M302.3,1382.264l205.332-318.169L319.5,747.683h151.336l102.666,202.35 c9.479,19.223,15.975,33.494,19.49,42.919h1.331c6.745-15.336,13.845-30.228,21.3-44.677L725.371,747.79h138.929l-192.925,314.548 L869.2,1382.263H721.378L602.79,1160.158c-5.586-9.45-10.326-19.376-14.164-29.66h-1.757c-3.474,10.075-8.083,19.722-13.739,28.755 l-122.102,223.011H302.3z'
/>
<path
fill='#33C481'
d='M2192.143,0H1437.75v532.5h852V97.607C2289.75,43.7,2246.05,0,2192.143,0L2192.143,0z'
/>
<path fill='#107C41' d='M1437.75,1065h852v532.5h-852V1065z' />
</svg>`}
/>
{/* MANUAL-CONTENT-START:intro */}
[Microsoft Teams](https://www.microsoft.com/en-us/microsoft-365/excel) es una potente aplicación de hojas de cálculo que permite la gestión, análisis y visualización de datos. A través de la integración de Microsoft Excel en Sim, puedes leer, escribir y manipular datos de hojas de cálculo de forma programática para satisfacer tus necesidades de automatización de flujos de trabajo.
Con la integración de Microsoft Excel, puedes:
- **Leer datos de hojas de cálculo**: Acceder a datos de rangos, hojas y celdas específicas
- **Escribir y actualizar datos**: Añadir nuevos datos o modificar contenido existente en hojas de cálculo
- **Gestionar tablas**: Crear y manipular estructuras de datos tabulares
- **Manejar múltiples hojas**: Trabajar con varias hojas de trabajo en un libro
- **Procesar datos**: Importar, exportar y transformar datos de hojas de cálculo
En Sim, la integración de Microsoft Excel proporciona acceso fluido a la funcionalidad de hojas de cálculo mediante autenticación OAuth. Puedes leer datos de rangos específicos, escribir nueva información, actualizar celdas existentes y manejar varios formatos de datos. La integración admite operaciones tanto de lectura como de escritura con opciones flexibles de entrada y salida. Esto te permite crear flujos de trabajo que pueden gestionar eficazmente datos de hojas de cálculo, ya sea extrayendo información para análisis, actualizando registros automáticamente o manteniendo la consistencia de datos en todas tus aplicaciones.
{/* MANUAL-CONTENT-END */}
## Instrucciones de uso
Integra la funcionalidad de Microsoft Excel para gestionar datos de hojas de cálculo. Lee datos de rangos específicos, escribe nuevos datos, actualiza celdas existentes y manipula datos de tablas utilizando autenticación OAuth. Admite varios formatos de entrada y salida para un manejo flexible de datos.
## Herramientas
### `microsoft_excel_read`
Leer datos de una hoja de cálculo de Microsoft Excel
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo de la que leer |
| `range` | string | No | El rango de celdas del que leer. Acepta "NombreHoja!A1:B2" para rangos explícitos o simplemente "NombreHoja" para leer el rango utilizado de esa hoja. Si se omite, lee el rango utilizado de la primera hoja. |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `data` | object | Datos del rango de la hoja de cálculo |
### `microsoft_excel_write`
Escribir datos en una hoja de cálculo de Microsoft Excel
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | -------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo en la que escribir |
| `range` | string | No | El rango de celdas en el que escribir |
| `values` | array | Sí | Los datos a escribir en la hoja de cálculo |
| `valueInputOption` | string | No | El formato de los datos a escribir |
| `includeValuesInResponse` | boolean | No | Si se deben incluir los valores escritos en la respuesta |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `updatedRange` | string | El rango que fue actualizado |
| `updatedRows` | number | Número de filas que fueron actualizadas |
| `updatedColumns` | number | Número de columnas que fueron actualizadas |
| `updatedCells` | number | Número de celdas que fueron actualizadas |
| `metadata` | object | Metadatos de la hoja de cálculo |
### `microsoft_excel_table_add`
Añadir nuevas filas a una tabla de Microsoft Excel
#### Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
| --------- | ---- | ----------- | ----------- |
| `spreadsheetId` | string | Sí | El ID de la hoja de cálculo que contiene la tabla |
| `tableName` | string | Sí | El nombre de la tabla a la que añadir filas |
| `values` | array | Sí | Los datos para añadir a la tabla \(matriz de matrices o matriz de objetos\) |
#### Salida
| Parámetro | Tipo | Descripción |
| --------- | ---- | ----------- |
| `index` | number | Índice de la primera fila que fue añadida |
| `values` | array | Matriz de filas que fueron añadidas a la tabla |
| `metadata` | object | Metadatos de la hoja de cálculo |
## Notas
- Categoría: `tools`
- Tipo: `microsoft_excel`

Some files were not shown because too many files have changed in this diff Show More