Skip to content

Commit

Permalink
Merge branch 'develop' into fix-akash-eslint
Browse files Browse the repository at this point in the history
  • Loading branch information
odilitime authored Jan 11, 2025
2 parents 4224a22 + e49f680 commit 0881e16
Show file tree
Hide file tree
Showing 11 changed files with 2,251 additions and 358 deletions.
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,12 @@ FLOW_ENDPOINT_URL= # Default: https://mainnet.onflow.org
INTERNET_COMPUTER_PRIVATE_KEY=
INTERNET_COMPUTER_ADDRESS=


#Cloudflare AI Gateway
CLOUDFLARE_GW_ENABLED= # Set to true to enable Cloudflare AI Gateway
CLOUDFLARE_AI_ACCOUNT_ID= # Cloudflare AI Account ID - found in the Cloudflare Dashboard under AI Gateway
CLOUDFLARE_AI_GATEWAY_ID= # Cloudflare AI Gateway ID - found in the Cloudflare Dashboard under AI Gateway

# Aptos
APTOS_PRIVATE_KEY= # Aptos private key
APTOS_NETWORK= # Must be one of mainnet, testnet
Expand Down
191 changes: 191 additions & 0 deletions docs/README_PT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
# Eliza - framework de simulação Multi-agentes

# https://github.com/elizaOS/eliza

# Visite https://eliza.builders para suporte

## 🌍 README Traduções

[中文说明](README_CN.md) | [Deutsch](README_DE.md) | [Français](README_FR.md) | [ไทย](README_TH.md) | [Español](README_ES.md) | [Português](README_PT.md)

# dev branch

<img src="static/img/eliza_banner.jpg" alt="Eliza Banner" width="100%" />

_Como visto dando funcionamento em [@DegenSpartanAI](https://x.com/degenspartanai) e [@MarcAIndreessen](https://x.com/pmairca)_

- Framework Multi-agente de simulação
- Adicione quantos personagens únicos quiser com o [characterfile](https://github.com/lalalune/characterfile/)
- Conectores completos para Discord e Twitter, com suporte para canais de voz no Discord
- Memória RAG completa para conversas e documentos
- Pode ler links e PDFs, transcrever áudios e vídeos, resumir conversas e muito mais
- Altamente extensível - crie suas próprias ações e clientes para ampliar as capacidades do Eliza
- Suporte para modelos de código aberto e locais (configuração padrão com Nous Hermes Llama 3.1B)
- Suporte ao OpenAI para inferência em nuvem em dispositivos com configurações leves
- Modo "Perguntar ao Claude" para chamadas a Claude em consultas mais complexas
- 100% Typescript

# Iniciando

**Pré-requisitos (OBRIGATÓRIO):**

- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
- [pnpm](https://pnpm.io/installation)

### Edite o arquivo .env

- Copie .env.example para .env e preencha com valores apropriados
- Edite as variáveis de ambiente do TWITTER para adicionar o nome de usuário e a senha do seu bot

### Edite o arquivo de personagem (character file)

- Verifique o arquivo `src/core/defaultCharacter.ts` - você pode modificá-lo
- Você também pode carregar personagens com o comando `pnpm start --characters="path/to/your/character.json"` e executar vários bots ao mesmo tempo.

Após configurar o arquivo .env e o arquivo de personagem (character file), você pode iniciar o bot com o seguinte comando:

```
pnpm i
pnpm start
```

# Personalizando Eliza

### Adicionando ações personalizadas

Para evitar conflitos no diretório principal, recomendamos adicionar ações personalizadas a um diretório chamado `custom_actions` e, em seguida, incluí-las no arquivo `elizaConfig.yaml`. Consulte o arquivo `elizaConfig.example.yaml` para um exemplo.

## Rodando com diferentes modelos

### Rode com Llama

Você pode executar modelos Llama 70B ou 405B configurando a variável de ambiente `XAI_MODEL` para `meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo` ou `meta-llama/Meta-Llama-3.1-405B-Instruct`

### Rode com Grok

Você pode executar modelos Grok configurando a variável de ambiente `XAI_MODEL` para `grok-beta`.

### Rode com OpenAI

Você pode executar modelos OpenAI configurando a variável de ambiente para `gpt-4-mini` or `gpt-4o`

## Requisitos Adicionais

Você pode precisar instalar o Sharp. Se aparecer um erro ao iniciar, tente instalá-lo com o seguinte comando:

```
pnpm install --include=optional sharp
```

# Configuração do Ambiente

Você precisará adicionar variáveis de ambiente ao seu arquivo .env para conectar a diversas plataformas:

```
# Variaveis de ambiente obrigatorias
DISCORD_APPLICATION_ID=
DISCORD_API_TOKEN= # Bot token
OPENAI_API_KEY=sk-* # OpenAI API key, começando com sk-
ELEVENLABS_XI_API_KEY= # API key da elevenlabs
# Configuracoes ELEVENLABS
ELEVENLABS_MODEL_ID=eleven_multilingual_v2
ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
ELEVENLABS_VOICE_STABILITY=0.5
ELEVENLABS_VOICE_SIMILARITY_BOOST=0.9
ELEVENLABS_VOICE_STYLE=0.66
ELEVENLABS_VOICE_USE_SPEAKER_BOOST=false
ELEVENLABS_OPTIMIZE_STREAMING_LATENCY=4
ELEVENLABS_OUTPUT_FORMAT=pcm_16000
TWITTER_DRY_RUN=false
TWITTER_USERNAME= # Usuário da conta
TWITTER_PASSWORD= # Senha da conta
TWITTER_EMAIL= # Email da conta
X_SERVER_URL=
XAI_API_KEY=
XAI_MODEL=
# Para perguntas ao Claude
ANTHROPIC_API_KEY=
WALLET_SECRET_KEY=EXAMPLE_WALLET_SECRET_KEY
WALLET_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY
BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
## Telegram
TELEGRAM_BOT_TOKEN=
TOGETHER_API_KEY=
```

# Configuração de Inferência Local

### Configuração CUDA

Se você tiver uma GPU NVIDIA, pode instalar o CUDA para acelerar significativamente a inferência local.

```
pnpm install
npx --no node-llama-cpp source download --gpu cuda
```

Certifique-se de que você instalou o CUDA Toolkit, incluindo o cuDNN e cuBLAS.

### Rodando localmente

Add XAI_MODEL e defina-o para uma das opções mencionadas em [Run with
Llama](#run-with-llama) - você pode deixar X_SERVER_URL e XAI_API_KEY em branco,
pois o modelo será baixado do Hugging Face e consultado localmente.

# Clientes

## Discord Bot

Para ajuda com a configuração do seu bot no Discord, consulte aqui: https://discordjs.guide/preparations/setting-up-a-bot-application.html

# Desenvolvimento

## Testando

Para executar a suíte de testes:

```bash
pnpm test # Executar os testes uma vez
pnpm test:watch # Executar os testes no modo de observação/monitoramento (watch mode)
```

Para testes específicos de banco de dados:

```bash
pnpm test:sqlite # Rode testes com SQLite
pnpm test:sqljs # Rode testes com SQL.js
```

Os testes são escritos usando o Jest e podem ser encontrados nos arquivos. O ambiente de teste está configurado para:

- Carregar variáveis de ambiente do arquivo `.env.test`
- Usar um tempo limite de 2 minutos para testes de longa duração
- Suportar módulos ESM
- Executar os testes em sequência (--runInBand)

Para criar novos testes, adicione um arquivo `.test.ts` ao lado do código que você está testando.

## Atualizações da Documentação

Por favor, verifique se a documentação fornecida está correta. Para fazer isso, execute o serviço de documentação (docs) abaixo.

```console
docker compose -f docker-compose-docs.yaml up --build
```

O servidor do Docusaurus será iniciado e você poderá verificar a documentação localmente em https://localhost:3000/eliza.
53 changes: 53 additions & 0 deletions docs/docs/guides/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,59 @@ HEURIST_API_KEY=
# Livepeer Settings
LIVEPEER_GATEWAY_URL=
```

### Cloudflare AI Gateway Integration

Eliza supports routing API calls through [Cloudflare AI Gateway](https://developers.cloudflare.com/ai-gateway/), which provides several benefits:

- Detailed analytics and monitoring of message traffic and response times
- Cost optimization through request caching and usage tracking across providers
- Improved latency through Cloudflare's global network
- Comprehensive visibility into message content and token usage
- Cost analysis and comparison between different AI providers
- Usage patterns and trends visualization
- Request/response logging for debugging and optimization

To enable Cloudflare AI Gateway:

```bash
# Cloudflare AI Gateway Settings
CLOUDFLARE_GW_ENABLED=true
CLOUDFLARE_AI_ACCOUNT_ID=your-account-id
CLOUDFLARE_AI_GATEWAY_ID=your-gateway-id
```

Supported providers through Cloudflare AI Gateway:
- OpenAI
- Anthropic
- Groq

When enabled, Eliza will automatically route requests through your Cloudflare AI Gateway endpoint. The gateway URL is constructed in the format:
```
https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/${provider}
```

If the gateway configuration is incomplete or disabled, Eliza will fall back to direct API calls.

```bash
# Cloudflare AI Gateway Settings
CLOUDFLARE_GW_ENABLED=true
CLOUDFLARE_AI_ACCOUNT_ID=your-account-id
CLOUDFLARE_AI_GATEWAY_ID=your-gateway-id
```

Supported providers through Cloudflare AI Gateway:
- OpenAI
- Anthropic
- Groq

When enabled, Eliza will automatically route requests through your Cloudflare AI Gateway endpoint. The gateway URL is constructed in the format:
```
https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/${provider}
```

If the gateway configuration is incomplete or disabled, Eliza will fall back to direct API calls.

### Image Generation

Configure image generation in your character file:
Expand Down
8 changes: 8 additions & 0 deletions packages/adapter-postgres/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,7 @@ export class PostgresDatabaseAdapter
roomIds: UUID[];
agentId?: UUID;
tableName: string;
limit?: number;
}): Promise<Memory[]> {
return this.withDatabase(async () => {
if (params.roomIds.length === 0) return [];
Expand All @@ -344,6 +345,13 @@ export class PostgresDatabaseAdapter
queryParams = [...queryParams, params.agentId];
}

// Add sorting, and conditionally add LIMIT if provided
query += ` ORDER BY "createdAt" DESC`;
if (params.limit) {
query += ` LIMIT $${queryParams.length + 1}`;
queryParams.push(params.limit.toString());
}

const { rows } = await this.pool.query(query, queryParams);
return rows.map((row) => ({
...row,
Expand Down
2 changes: 1 addition & 1 deletion packages/client-direct/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ export class DirectClient {
memory,
[responseMessage],
state,
async (newMessages) => {
async (_newMessages) => {
// FIXME: this is supposed override what the LLM said/decided
// but the promise doesn't make this possible
//message = newMessages;
Expand Down
1 change: 1 addition & 0 deletions packages/core/src/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ export abstract class DatabaseAdapter<DB = any> implements IDatabaseAdapter {
agentId: UUID;
roomIds: UUID[];
tableName: string;
limit?: number;
}): Promise<Memory[]>;

abstract getMemoryById(id: UUID): Promise<Memory | null>;
Expand Down
Loading

0 comments on commit 0881e16

Please sign in to comment.