Skip to content

Commit 12d6c71

Browse files
authored
Nebula t0-003 Integration (#147)
1 parent 17bc9c5 commit 12d6c71

File tree

5 files changed

+109
-299
lines changed

5 files changed

+109
-299
lines changed
+57-100
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
// using System.Numerics;
2+
using System.Numerics;
23
using Thirdweb.AI;
34

45
namespace Thirdweb.Tests.AI;
56

67
public class NebulaTests : BaseTests
78
{
8-
// private const string NEBULA_TEST_CONTRACT = "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8";
9-
// private const string NEBULA_TEST_USDC_ADDRESS = "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
10-
// private const int NEBULA_TEST_CHAIN = 11155111;
9+
private const string NEBULA_TEST_USDC_ADDRESS = "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
10+
11+
private const string NEBULA_TEST_CONTRACT = "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8";
12+
13+
private const int NEBULA_TEST_CHAIN = 11155111;
1114

1215
public NebulaTests(ITestOutputHelper output)
1316
: base(output) { }
@@ -33,104 +36,58 @@ public async Task Create_ResumesSession()
3336
Assert.Equal(sessionId, nebula.SessionId);
3437
}
3538

36-
// [Fact(Timeout = 120000)]
37-
// public async Task Chat_Single_ReturnsResponse()
38-
// {
39-
// var nebula = await ThirdwebNebula.Create(this.Client);
40-
// var response = await nebula.Chat(
41-
// message: "What's the symbol of this contract?",
42-
// context: new NebulaContext(contractAddresses: new List<string> { NEBULA_TEST_CONTRACT }, chainIds: new List<BigInteger> { NEBULA_TEST_CHAIN })
43-
// );
44-
// Assert.NotNull(response);
45-
// Assert.NotNull(response.Message);
46-
// Assert.Contains("CAT", response.Message);
47-
// }
48-
49-
// [Fact(Timeout = 120000)]
50-
// public async Task Chat_Single_NoContext_ReturnsResponse()
51-
// {
52-
// var nebula = await ThirdwebNebula.Create(this.Client);
53-
// var response = await nebula.Chat(message: $"What's the symbol of this contract: {NEBULA_TEST_CONTRACT} (Sepolia)?");
54-
// Assert.NotNull(response);
55-
// Assert.NotNull(response.Message);
56-
// Assert.Contains("CAT", response.Message);
57-
// }
58-
59-
// [Fact(Timeout = 120000)]
60-
// public async Task Chat_Multiple_ReturnsResponse()
61-
// {
62-
// var nebula = await ThirdwebNebula.Create(this.Client);
63-
// var response = await nebula.Chat(
64-
// messages: new List<NebulaChatMessage>
65-
// {
66-
// new("What's the symbol of this contract?", NebulaChatRole.User),
67-
// new("The symbol is CAT", NebulaChatRole.Assistant),
68-
// new("What's the name of this contract?", NebulaChatRole.User),
69-
// },
70-
// context: new NebulaContext(contractAddresses: new List<string> { NEBULA_TEST_CONTRACT }, chainIds: new List<BigInteger> { NEBULA_TEST_CHAIN })
71-
// );
72-
// Assert.NotNull(response);
73-
// Assert.NotNull(response.Message);
74-
// Assert.Contains("CatDrop", response.Message, StringComparison.OrdinalIgnoreCase);
75-
// }
39+
[Fact(Timeout = 120000)]
40+
public async Task Chat_Single_ReturnsResponse()
41+
{
42+
var nebula = await ThirdwebNebula.Create(this.Client);
43+
var response = await nebula.Chat(message: $"What's the symbol of this contract {NEBULA_TEST_CONTRACT}?", context: new NebulaContext(chainIds: new List<BigInteger>() { NEBULA_TEST_CHAIN }));
44+
Assert.NotNull(response);
45+
Assert.NotNull(response.Message);
46+
Assert.Contains("CAT", response.Message);
47+
}
7648

77-
// [Fact(Timeout = 120000)]
78-
// public async Task Chat_UnderstandsWalletContext()
79-
// {
80-
// var wallet = await PrivateKeyWallet.Generate(this.Client);
81-
// var expectedAddress = await wallet.GetAddress();
82-
// var nebula = await ThirdwebNebula.Create(this.Client);
83-
// var response = await nebula.Chat(message: "What is my wallet address?", wallet: wallet);
84-
// Assert.NotNull(response);
85-
// Assert.NotNull(response.Message);
86-
// Assert.Contains(expectedAddress, response.Message);
87-
// }
49+
[Fact(Timeout = 120000)]
50+
public async Task Chat_Single_NoContext_ReturnsResponse()
51+
{
52+
var nebula = await ThirdwebNebula.Create(this.Client);
53+
var response = await nebula.Chat(message: $"What's the symbol of this contract: {NEBULA_TEST_CONTRACT} (Sepolia)?");
54+
Assert.NotNull(response);
55+
Assert.NotNull(response.Message);
56+
Assert.Contains("CAT", response.Message);
57+
}
8858

89-
// [Fact(Timeout = 120000)]
90-
// public async Task Execute_ReturnsMessageAndReceipt()
91-
// {
92-
// var signer = await PrivateKeyWallet.Generate(this.Client);
93-
// var wallet = await SmartWallet.Create(signer, NEBULA_TEST_CHAIN);
94-
// var nebula = await ThirdwebNebula.Create(this.Client);
95-
// var response = await nebula.Execute(
96-
// new List<NebulaChatMessage>
97-
// {
98-
// new("What's the address of vitalik.eth", NebulaChatRole.User),
99-
// new("The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298", NebulaChatRole.Assistant),
100-
// new("Approve 1 USDC to them", NebulaChatRole.User),
101-
// },
102-
// wallet: wallet,
103-
// context: new NebulaContext(contractAddresses: new List<string>() { NEBULA_TEST_USDC_ADDRESS })
104-
// );
105-
// Assert.NotNull(response);
106-
// Assert.NotNull(response.Message);
107-
// Assert.NotNull(response.TransactionReceipts);
108-
// Assert.NotEmpty(response.TransactionReceipts);
109-
// Assert.NotNull(response.TransactionReceipts[0].TransactionHash);
110-
// Assert.True(response.TransactionReceipts[0].TransactionHash.Length == 66);
111-
// }
59+
[Fact(Timeout = 120000)]
60+
public async Task Chat_UnderstandsWalletContext()
61+
{
62+
var wallet = await PrivateKeyWallet.Generate(this.Client);
63+
var expectedAddress = await wallet.GetAddress();
64+
var nebula = await ThirdwebNebula.Create(this.Client);
65+
var response = await nebula.Chat(message: "What is my wallet address?", wallet: wallet);
66+
Assert.NotNull(response);
67+
Assert.NotNull(response.Message);
68+
Assert.Contains(expectedAddress, response.Message);
69+
}
11270

113-
// [Fact(Timeout = 120000)]
114-
// public async Task Execute_ReturnsMessageAndReceipts()
115-
// {
116-
// var signer = await PrivateKeyWallet.Generate(this.Client);
117-
// var wallet = await SmartWallet.Create(signer, NEBULA_TEST_CHAIN);
118-
// var nebula = await ThirdwebNebula.Create(this.Client);
119-
// var response = await nebula.Execute(
120-
// new List<NebulaChatMessage>
121-
// {
122-
// new("What's the address of vitalik.eth", NebulaChatRole.User),
123-
// new("The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298", NebulaChatRole.Assistant),
124-
// new("Approve 1 USDC to them", NebulaChatRole.User),
125-
// },
126-
// wallet: wallet,
127-
// context: new NebulaContext(contractAddresses: new List<string>() { NEBULA_TEST_USDC_ADDRESS })
128-
// );
129-
// Assert.NotNull(response);
130-
// Assert.NotNull(response.Message);
131-
// Assert.NotNull(response.TransactionReceipts);
132-
// Assert.NotEmpty(response.TransactionReceipts);
133-
// Assert.NotNull(response.TransactionReceipts[0].TransactionHash);
134-
// Assert.True(response.TransactionReceipts[0].TransactionHash.Length == 66);
135-
// }
71+
[Fact(Timeout = 120000)]
72+
public async Task Execute_ReturnsMessageAndReceipt()
73+
{
74+
var signer = await PrivateKeyWallet.Generate(this.Client);
75+
var wallet = await SmartWallet.Create(signer, NEBULA_TEST_CHAIN);
76+
var nebula = await ThirdwebNebula.Create(this.Client);
77+
var response = await nebula.Execute(
78+
new List<NebulaChatMessage>
79+
{
80+
new("What's the address of vitalik.eth", NebulaChatRole.User),
81+
new("The address of vitalik.eth is 0xd8dA6BF26964aF8E437eEa5e3616511D7G3a3298", NebulaChatRole.Assistant),
82+
new($"Approve 1 USDC (this contract: {NEBULA_TEST_USDC_ADDRESS}) to them", NebulaChatRole.User),
83+
},
84+
wallet: wallet
85+
);
86+
Assert.NotNull(response);
87+
Assert.NotNull(response.Message);
88+
Assert.NotNull(response.TransactionReceipts);
89+
Assert.NotEmpty(response.TransactionReceipts);
90+
Assert.NotNull(response.TransactionReceipts[0].TransactionHash);
91+
Assert.True(response.TransactionReceipts[0].TransactionHash.Length == 66);
92+
}
13693
}

Thirdweb/Thirdweb.AI/FeedbackClient.cs

-28
This file was deleted.

0 commit comments

Comments
 (0)